Christophe Leroy's on August 27, 2019 4:07 pm: > > > Le 27/08/2019 à 05:30, Nicholas Piggin a écrit : >> Commit 3033f14ab78c3 ("clone: support passing tls argument via C rather >> than pt_regs magic") introduced the HAVE_COPY_THREAD_TLS option. Use it >> to avoid a subtle assumption about the argument ordering of clone type >> syscalls. >> >> Signed-off-by: Nicholas Piggin <npig...@gmail.com> >> --- >> arch/powerpc/Kconfig | 1 + >> arch/powerpc/kernel/process.c | 9 +++++---- >> 2 files changed, 6 insertions(+), 4 deletions(-) >> >> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig >> index d8dcd8820369..7477a3263225 100644 >> --- a/arch/powerpc/Kconfig >> +++ b/arch/powerpc/Kconfig >> @@ -182,6 +182,7 @@ config PPC >> select HAVE_STACKPROTECTOR if PPC64 && >> $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13) >> select HAVE_STACKPROTECTOR if PPC32 && >> $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r2) >> select HAVE_CONTEXT_TRACKING if PPC64 >> + select HAVE_COPY_THREAD_TLS >> select HAVE_DEBUG_KMEMLEAK >> select HAVE_DEBUG_STACKOVERFLOW >> select HAVE_DYNAMIC_FTRACE >> diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c >> index 8fc4de0d22b4..24621e7e5033 100644 >> --- a/arch/powerpc/kernel/process.c >> +++ b/arch/powerpc/kernel/process.c >> @@ -1600,8 +1600,9 @@ static void setup_ksp_vsid(struct task_struct *p, >> unsigned long sp) >> /* >> * Copy architecture-specific thread state >> */ >> -int copy_thread(unsigned long clone_flags, unsigned long usp, >> - unsigned long kthread_arg, struct task_struct *p) >> +int copy_thread_tls(unsigned long clone_flags, unsigned long usp, >> + unsigned long kthread_arg, struct task_struct *p, >> + unsigned long tls) >> { >> struct pt_regs *childregs, *kregs; >> extern void ret_from_fork(void); >> @@ -1642,10 +1643,10 @@ int copy_thread(unsigned long clone_flags, unsigned >> long usp, >> if (clone_flags & CLONE_SETTLS) { >> #ifdef CONFIG_PPC64 > > is_32bit_task() exists and always returns 1 on PPC32 so this gross ifdef > in the middle of an if/else is pointless, it should be dropped.
I could do that as another patch in the series. Thanks, Nick