CHECKER bate: Syscall changes registers beyond %eax, on linux-i386

george anzinger
2002-09-24T17:59:40Z

george anzinger wrote:
>
> Richard Henderson wrote:
> >
> > On Fri, Sep 20, 2002 at 01:32:05AM -0700, george anzinger wrote:
> > > So, is there a problem? Yes, neither the call stub macros
> > > in asm/unistd.h nor those in glibc bother to list the used
> > > registers beyond the third ":".
> >
> > No, this is not the real problem. The real problem is that if
> > the program receives a signal during a system call, the kernel
> > will return all the way up to entry.S, deliver the signal and
> > then restart the syscall.
> >
> > Except the syscall will restart with the corrupted registers.
> >
> > Hilarity ensues.
> >
> I submit that BOTH of these are problems. And only the
> kernel can fix the latter.
>
Sounds like a job for the CHECKER. Should be easy to verify
that a system call does not modify its call parameters.

--
George Anzinger george@mvista.com