Re: PROBLEM: rt_sigsuspend() does not return EINTR on 2.6.16-rc2+

Paul Mackerras
2006-03-06T11:25:33Z

Andrew Morton writes:

> Matthew Grant <grantma@anathoth.gen.nz> wrote:
> >
> > OK, a major piece of software is broken for mounting removable media. A
> > kernel upgrade from 2.6.15 SHOULDn't do that.
>
> Yes, this is a serious problem and we need to get to the bottom of it.

I have been looking at the equivalent code on powerpc. This looks to
me like we aren't calling do_signal on the way back out of the system
call to userspace on x86 when the _TIF_RESTORE_SIGMASK thread_info
flag is set. I had a look at the code in arch/i386/kernel and I can't
see why we wouldn't be getting to do_signal, but x86 assembly is not
my strong point.

The fact that userspace is seeing the -ERESTARTNOHAND return value
from the rt_sigsuspend strongly suggests that we aren't actually
calling do_signal, though.

Paul.