> Date: Thu, 20 Jun 2013 14:25:49 +0300
> From: Paul Irofti <[email protected]>
>
> > + 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);