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

Richard B. Johnson (root@chaos.analogic.com)
Thu, 19 Sep 2002 15:53:24 -0400 (EDT)


On Thu, 19 Sep 2002, Richard Henderson wrote:

> On Thu, Sep 19, 2002 at 03:40:52PM -0400, Richard B. Johnson wrote:
> > Well it's not modifying those values.
>
> It's not modifying "a", true, but it _is_ modifying the parameter
> area. Which is exactly the kernel bug in question.
>

Yep. This can't be found by the compiler. The parameter area is
writable so it looks like somebody needs to do some 'code inspection'
and some additional testing.

> > It's really bad code because it could have done:
> >
> > incl $0x04(%esp)
> > incl $0x08(%esp)
> > incl $0x1c(%esp)
> > jmp bar
>
> Yes, I know.
>

It's a problem with a 'general purpose' compiler that wants to
be "all things" to all people. If somebody made a gcc-compatible
compiler, tuned to the ix86 characteristics, I think we could
cut the extra instructions by at least 1/2, maybe more.

Cheers,
Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips).
The US military has given us many words, FUBAR, SNAFU, now ENRON.
Yes, top management were graduates of West Point and Annapolis.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/