On Tue, 2012-02-14 at 15:56 +0000, David Howells wrote:
Matt Fleming [off-list ref] wrote:
quoted
asmlinkage long sys_sigsuspend(int history0, int history1, old_sigset_t mask)
{
- mask &= _BLOCKABLE;
- spin_lock_irq(¤t->sighand->siglock);
+ sigset_t blocked;
+
current->saved_sigmask = current->blocked;
Can this line create a race, now that it's not protected by a lock? It is
possible for current->blocked to get altered by another thread.
->blocked can only ever be altered by current, not another thread. See
the following comment from sigprocmask() in kernel/signal.c,
/* Lockless, only current can change ->blocked, never from irq */
if (oldset)
*oldset = tsk->blocked;
--
Matt Fleming, Intel Open Source Technology Center