public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: David Woodhouse <dwmw2@infradead.org>
Cc: torvalds@osdl.org, akpm@osdl.org, ak@suse.de, linux-arch@vger.kernel.org
Subject: Re: [PATCH] Revert [i386/x86_64]: Remove __KERNEL__ ifdef around _syscall*()
Date: Mon, 4 Sep 2006 22:07:53 +0200	[thread overview]
Message-ID: <200609042207.53588.arnd@arndb.de> (raw)
In-Reply-To: <1157398050.2473.137.camel@shinybook.infradead.org>

Am Monday 04 September 2006 21:27 schrieb David Woodhouse:
> 1. C libraries have their own syscall(); there's no _need_ for these
>    macros to be exported by the kernel.
>
> 2. These macros work in-kernel but they are _not_ designed to work in
>    the general case in userspace. The i386 version is broken for PIC
>    code, for example.

In -mm, they are no longer used in the kernel, and it's hard to even
try to use them since the 'errno' variable is gone as well.

> 3. We should be consistent about what we provide in kernel headers.
>    Since we don't provide these macros on other architectures, we should
>    not do so on i386 and x86_64

Yes, fully agreed.

> I see three possible ways to fix this. The first, and the sanest, is
> just to put the ifdefs back and remove these macros from user view, as
> in the patch below.

Putting #ifdef __KERNEL__ back in makes it consistently wrong on all
architectures, which is better than the current wrong on all architectures
but inconsistent state.

After merging my patches in early 2.6.19, the consequence of this should
be to remove the macros entirely so we don't get any new users.

> The second option, if the consensus really is that we should ignore
> reason #1 above and export these unneeded macros, is that we can apply
> the patch below and then also add generic versions of _syscall*() in
> linux/unistd.h which just invoke libc's syscall(), instead of trying to
> use the in-kernel assembly versions. That would at least address #2 and
> #3 -- and in fact some distributions have been shipping with that
> in /usr/include/linux/unistd.h for a long time already.

I'd rather have them in include/asm-generic/unistd.h and include that
from every <asm/unistd.h> to cause the least breakage in existing
user space applications.

> The third, and least sensible, option would be to accept what Andi has
> done and then attempt to address #2 and #3 above by _fixing_ the macros
> so that they work in the general case -- in all types of code and on all
> architectures. Even in that case, the patch below should be applied to
> remove these macros from user view as an interim measure until they are
> actually fixed and consistent across architectures and code models.

That should also follow by a change in 2.6.19 -- put all the macros in
#ifndef __KERNEL__, so they can /only/ be used in user space.

	Arnd <><

  parent reply	other threads:[~2006-09-04 20:07 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200608302359.k7UNxIZW027536@hera.kernel.org>
2006-09-04 19:27 ` [PATCH] Revert [i386/x86_64]: Remove __KERNEL__ ifdef around _syscall*() David Woodhouse
2006-09-04 19:38   ` Andrew Morton
2006-09-04 19:56     ` Arnd Bergmann
2006-09-04 20:50       ` David Woodhouse
2006-09-04 19:56     ` David Woodhouse
2006-09-10  9:48     ` David Woodhouse
2006-09-10  8:33       ` Andi Kleen
2006-09-10 10:30         ` David Woodhouse
2006-09-04 20:07   ` Arnd Bergmann [this message]
2006-09-04 20:30   ` Andi Kleen
2006-09-04 21:16     ` David Woodhouse

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200609042207.53588.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=ak@suse.de \
    --cc=akpm@osdl.org \
    --cc=dwmw2@infradead.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox