Prev: [tip:irq/core] genirq: Run irq handlers with interrupts disabled
Next: [tip:irq/core] genirq: Remove IRQF_DISABLED from core code
From: Oleg Nesterov on 13 Apr 2010 15:40 On 04/13, Peter Zijlstra wrote: > > On Sun, 2010-02-28 at 20:24 +0100, Raistlin wrote: > > > > +#define dl_se_signal(se, s, msg) \ > > + do { \ > > + struct task_struct *t = dl_task_of(se); \ > > + sigaddset(&t->pending.signal, s); \ > > + set_tsk_thread_flag(t, TIF_SIGPENDING); \ > > + printk(KERN_INFO msg "in %d (%s)\n", task_pid_nr(t), t->comm); \ > > + } while (0) > > + Without ->siglock? This is racy even if dl_task_of(se) == current, but I guess it can be !current. For example, we must never set TIF_SIGPENDING without wake_up_state(). A fatal signal should kill the whole process, etc. Even sigaddset() itself can race with tkill, it is not atomic. Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |