Re: Issues with "x86, um: switch to generic fork/vfork/clone" commit

From: Al Viro
Date: Sun Jan 20 2013 - 16:28:19 EST


On Sun, Jan 20, 2013 at 12:53:20PM -0800, Linus Torvalds wrote:
> On Sat, Jan 19, 2013 at 7:12 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
> >
> > OK... I think I understand what's going on. We need asmlinkage_protect
> > in sys_clone() ;-/ For what it's worth, I really wonder if we ought to
> > treat that as syscall wrappers - i.e. have SYSCALL_DEFINEx on i386 add
> > a wrapper that would do asmlinkage_protect itself. IMO it's the same kind
> > of thing as argument normalization handled by syscall wrappers - we make
> > sure that C function plays well with what asm glue is doing and expecting.
>
> Actually, I think we should do it *unconditionally* in the syscall wrappers.

That's what I mean; sorry for bad wording - should be "use SYSCALL_DEFINEx on
i386, adding a wrapper that would do asmlinkage_protect". And yes, i386 is
the only architecture that currently has a non-empty asmlinkage_protect(),
so all architecture dependencies would already be taken care of -
SYSCALL_DEFINEx should use asmlinkage_protect() unconditionally.

> But in the meantime, I guess I should just take the do_fork() one. Can
> I get a sign-off and a changelog?

See signal.git#for-linus; regression fixes (including this one) +
compat syscall fixes (discussed back in December) + a couple of "make
life easier for sigaltstack stuff by reducing inter-tree dependencies"
Please, pull from the usual place
git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal for-linus

Shortlog:
Al Viro (6):
switch compat_sys_sigaltstack() to COMPAT_SYSCALL_DEFINE
switch compat_sys_wait4() and compat_sys_waitid() to COMPAT_SYSCALL_DEFINE
x32: fix waitid()
x32: fix sigtimedwait
make sure that /linuxrc has std{in,out,err}
sys_clone() needs asmlinkage_protect

Vineet Gupta (2):
Ensure that kernel_init_freeable() is not inlined into non __init code
CONFIG_GENERIC_SIGALTSTACK build breakage with asm-generic/syscalls.h

Diffstat:
include/asm-generic/syscalls.h | 2 ++
init/do_mounts_initrd.c | 4 ++++
init/main.c | 4 ++--
kernel/compat.c | 23 +++++++++++++++--------
kernel/fork.c | 6 ++++--
kernel/signal.c | 5 +++--
6 files changed, 30 insertions(+), 14 deletions(-)

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