Messages in this thread | | | Date | Sun, 20 Jan 2013 21:28:32 +0000 | From | Al Viro <> | Subject | Re: Issues with "x86, um: switch to generic fork/vfork/clone" commit |
| |
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@zeniv.linux.org.uk> 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(-)
| |