remove global errno from the kernel, make _syscallX kernel-only
RFC PATCH 1/1 remove global errno from the kernel, make _syscallX kernel-only
(Apologies for the massive cross-post, but this is a matter that concerns all architectures. For archs that don't have a maintainer listed in MAINTAINERS I grabbed a random email address from arch/$arch/kernel/*. If you're not the person to answer this for your $arch, please forward to an appropriate person/list.)
Hi,
As I mentioned in my email to l-k with subject '[PATCH][RFC] global errno considered harmful' earlier today, having a global errno in the kernel doesn't really make sense.
Referenced patch [1] deletes all mention of a global errno from the kernel, fixes up a very small number of callers that were depending on it, and fixes up the syscall helpers in include/asm-$arch/unistd.h not to write an error code to errno in case of error anymore.
This subtly breaks userspace code that uses these helpers, but the general consensus seems to be that userspace code shouldn't be touching these in the first place. Patch [2] fixes up asm-$arch/unistd.h to only define _syscallX in case __KERNEL_SYSCALLS__ is defined, to try and actively break userspace (ab)users of this code (thanks to Ralf Baechle for suggesting I should do something along these lines).
What I would like to know from each architecture team:
- What is your arch's policy on userspace usage of asm/unistd.h, and consequently, what is your opinion on the goal these patches aim for?
- Are the changes I made in [1] and [2] for your $arch technically correct?
Please CC me on replies as I'm not on any of the lists posted to.
My intention is to push these to Linus for 2.5 if everyone agrees. They're probably too intrusive for 2.4 (although I'd love people to convince me otherwise).
cheers,
Lennert
[1] http://www.math.leidenuniv.nl/~buytenh/errno_ectomy-1.diff
[2] http://www.math.leidenuniv.nl/~buytenh/errno_ectomy-1-to-2.diff
Lennert Buytenhek <[email protected]> writes:
|> What I would like to know from each architecture team: |> - What is your arch's policy on userspace usage of asm/unistd.h, and |> consequently, what is your opinion on the goal these patches |> aim for?
I very much appreciate the removal of the _syscallX macros. FWIW, the ia64 version of these macros never worked in userspace anyway.
|> - Are the changes I made in [1] and [2] for your $arch technically
|> correct?
The m68k changes look ok.
|> Please CC me on replies as I'm not on any of the lists posted to. |> |> My intention is to push these to Linus for 2.5 if everyone agrees. |> They're probably too intrusive for 2.4 (although I'd love people |> to convince me otherwise).
I wouldn't mind putting it into 2.4.
Andreas.
Signature · 4 lines
Andreas Schwab "And now for something [email protected] completely different." SuSE Labs, SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
Quoted 7 lines · Andreas Schwab
|> Please CC me on replies as I'm not on any of the lists posted to. |> |> My intention is to push these to Linus for 2.5 if everyone agrees. |> They're probably too intrusive for 2.4 (although I'd love people |> to convince me otherwise).I wouldn't mind putting it into 2.4.
While it may break things in userspace it will hopefully ensure correctness for userspace, so better kill 'em now than later. _syscallX() has a too long history of causing problems.
Ralf