Re: [patch] Assigning syscall numbers for testing

Doug Ledford
2001-12-24T16:52:48Z

Keith Owens wrote:

> On Sun, 23 Dec 2001 12:06:04 -0500,
> Benjamin LaHaise <bcrl@redhat.com> wrote:
>
>>On Sun, Dec 23, 2001 at 04:10:21PM +1100, Keith Owens wrote:
>>
>>>I'm glad somebody understands the code :).
>>>
>>There are two directions of binary compatibility: forwads and backwards.
>>Your patch breaks forwards compatibility if used outside the main tree. Try
>>to understand this.
>>
>
> Too vague, give me an example with real code and effects.

Well, I'm not going to mess with code, but here's the example. Say you
start at syscall 240 for dynamic registration. Someone then submits a patch
to Linus that he accepts and which uses syscalls 240 and 241. Now, you can
modify the base of your patch, but if it has been accepted into any real
kernels anywhere, then someone could inadvertently end up running a user
space app compiled against Linus' new kernel and that uses the newly
allocated syscalls 240 and 241. If that's run on an older kernel with your
patch, then you call into the wrong syscalls with the wrong data. That's
how forward compatibility is broken. Ben's point is that you can move the
numbers up as high as you want, move them around as often as you want, but
unless either A) Linus grants your dynamic range as an *official* set of
syscall numbers or B) you get rid of the numbers entirely, it is never
guaranteed to be compatible with binaries compiled against newer kernels.

--

Doug Ledford <dledford@redhat.com> http://people.redhat.com/dledford
Please check my web site for aic7xxx updates/answers before
e-mailing me about problems