Messages in this thread | | | Subject | Re: [PATCH] fixup! signal: factor copy_siginfo_to_external32 from copy_siginfo_to_user32 | From | Christophe Leroy <> | Date | Wed, 29 Apr 2020 08:17:22 +0200 |
| |
Le 28/04/2020 à 21:56, Arnd Bergmann a écrit : > I think I found a way to improve the x32 handling: > > This is a simplification over Christoph's "[PATCH 2/7] signal: factor > copy_siginfo_to_external32 from copy_siginfo_to_user32", reducing the > x32 specifics in the common code to a single #ifdef/#endif check, in > order to keep it more readable for everyone else. > > Christoph, if you like it, please fold into your patch. > > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Alexander Viro <viro@zeniv.linux.org.uk> > Cc: Jeremy Kerr <jk@ozlabs.org> > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: "Eric W . Biederman" <ebiederm@xmission.com> > Cc: linuxppc-dev@lists.ozlabs.org > Cc: linux-fsdevel@vger.kernel.org > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > arch/x86/include/asm/compat.h | 10 ++++++++++ > arch/x86/kernel/signal.c | 23 +++++++++++++++++++++++ > kernel/signal.c | 15 ++------------- > 3 files changed, 35 insertions(+), 13 deletions(-) >
[...]
> diff --git a/kernel/signal.c b/kernel/signal.c > index 1a81602050b4..935facca4860 100644 > --- a/kernel/signal.c > +++ b/kernel/signal.c > @@ -3318,29 +3318,18 @@ void copy_siginfo_to_external32(struct compat_siginfo *to, > } > } > > +#ifndef CONFIG_X86_X32_ABI
Can it be declared __weak instead of enclosing it in an #ifndef ?
> int copy_siginfo_to_user32(struct compat_siginfo __user *to, > const struct kernel_siginfo *from) > -#if defined(CONFIG_X86_X32_ABI) || defined(CONFIG_IA32_EMULATION) > -{ > - return __copy_siginfo_to_user32(to, from, in_x32_syscall()); > -} > -int __copy_siginfo_to_user32(struct compat_siginfo __user *to, > - const struct kernel_siginfo *from, bool x32_ABI) > -#endif > { > struct compat_siginfo new; > > copy_siginfo_to_external32(&new, from); > -#ifdef CONFIG_X86_X32_ABI > - if (x32_ABI && from->si_signo == SIGCHLD) { > - new._sifields._sigchld_x32._utime = from->si_utime; > - new._sifields._sigchld_x32._stime = from->si_stime; > - } > -#endif > if (copy_to_user(to, &new, sizeof(struct compat_siginfo))) > return -EFAULT; > return 0; > } > +#endif > > static int post_copy_siginfo_from_user32(kernel_siginfo_t *to, > const struct compat_siginfo *from) >
Christophe
| |