https://github.com/torvalds/linux
Revision e9dd685ce81815811fb4da72e6ab10a694ac8468 authored by Steven Rostedt on 27 May 2014, 21:02:04 UTC, committed by Ingo Molnar on 05 June 2014, 09:07:41 UTC
As Peter Zijlstra told me, we have the following path: do_exit() exit_itimers() itimer_delete() spin_lock_irqsave(&timer->it_lock, &flags); timer_delete_hook(timer); kc->timer_del(timer) := posix_cpu_timer_del() put_task_struct() __put_task_struct() task_numa_free() spin_lock(&grp->lock); Which means that task_numa_free() can be called with interrupts disabled, which means that we should not be using spin_lock_irq() but spin_lock_irqsave() instead. Otherwise we are enabling interrupts while holding an interrupt unsafe lock! Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner<tglx@linutronix.de> Cc: Mike Galbraith <umgwanakikbuti@gmail.com> Cc: Eric Dumazet <eric.dumazet@gmail.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: http://lkml.kernel.org/r/20140527182541.GH11096@twins.programming.kicks-ass.net Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent 6acbfb9
Tip revision: e9dd685ce81815811fb4da72e6ab10a694ac8468 authored by Steven Rostedt on 27 May 2014, 21:02:04 UTC
sched/numa: Fix use of spin_{un}lock_irq() when interrupts are disabled
sched/numa: Fix use of spin_{un}lock_irq() when interrupts are disabled
Tip revision: e9dd685
File | Mode | Size |
---|---|---|
Makefile | -rw-r--r-- | 394 bytes |
compat.c | -rw-r--r-- | 19.0 KB |
compat_mq.c | -rw-r--r-- | 3.9 KB |
ipc_sysctl.c | -rw-r--r-- | 7.0 KB |
ipcns_notifier.c | -rw-r--r-- | 2.2 KB |
mq_sysctl.c | -rw-r--r-- | 2.9 KB |
mqueue.c | -rw-r--r-- | 35.3 KB |
msg.c | -rw-r--r-- | 24.0 KB |
msgutil.c | -rw-r--r-- | 3.6 KB |
namespace.c | -rw-r--r-- | 4.7 KB |
sem.c | -rw-r--r-- | 54.8 KB |
shm.c | -rw-r--r-- | 31.9 KB |
syscall.c | -rw-r--r-- | 2.3 KB |
util.c | -rw-r--r-- | 22.3 KB |
util.h | -rw-r--r-- | 6.4 KB |
Computing file changes ...