On Tue, May 27, 2014 at 05:02:04PM -0400, Steven Rostedt wrote: > 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! >
Duh, yes. Thanks Steve!
pgp4DG2FQBOtB.pgp
Description: PGP signature

