> Date: Thu, 20 Jun 2013 14:25:49 +0300 > From: Paul Irofti <p...@irofti.net> > > > + bs &= ~sigcantmask; > > switch (SCARG(uap, how)) { > > case LINUX_SIG_BLOCK: > > - p->p_sigmask |= bs & ~sigcantmask; > > + atomic_setbits_int(&p->p_sigmask, bs); > > break; > > > > case LINUX_SIG_UNBLOCK: > > - p->p_sigmask &= ~bs; > > + atomic_clearbits_int(&p->p_sigmask, bs); > > I'm pretty sure this is not correct with your change to bs before the > switch statement.
No that's fine. The bits in sigcantmask should never be set. So atomic_clearbits_int(&p->p_sigmask, bs & ~sigcanmask); is equivalent to atomic_clearbits_int(&p->p_sigmask, bs);