Christophe Leroy <christophe.le...@csgroup.eu> writes: > Le 25/11/2020 à 06:16, Aneesh Kumar K.V a écrit : ....
> +++ b/arch/powerpc/kernel/process.c >> @@ -1530,10 +1530,32 @@ void flush_thread(void) >> #ifdef CONFIG_PPC_BOOK3S_64 >> void arch_setup_new_exec(void) >> { >> - if (radix_enabled()) >> - return; >> - hash__setup_new_exec(); >> + if (!radix_enabled()) >> + hash__setup_new_exec(); >> + >> + /* >> + * If we exec out of a kernel thread then thread.regs will not be >> + * set. Do it now. >> + */ >> + if (!current->thread.regs) { >> + struct pt_regs *regs = task_stack_page(current) + THREAD_SIZE; >> + current->thread.regs = regs - 1; >> + } >> + >> +} >> +#else >> +void arch_setup_new_exec(void) >> +{ >> + /* >> + * If we exec out of a kernel thread then thread.regs will not be >> + * set. Do it now. >> + */ >> + if (!current->thread.regs) { >> + struct pt_regs *regs = task_stack_page(current) + THREAD_SIZE; >> + current->thread.regs = regs - 1; >> + } >> } >> + >> #endif > > No need to duplicate arch_setup_new_exec() I think. radix_enabled() is > defined at all time so the > first function should be valid at all time. > arch/powerpc/kernel/process.c: In function ‘arch_setup_new_exec’: arch/powerpc/kernel/process.c:1529:3: error: implicit declaration of function ‘hash__setup_new_exec’; did you mean ‘arch_setup_new_exec’? [-Werror=implicit-function-declaration] 1529 | hash__setup_new_exec(); | ^~~~~~~~~~~~~~~~~~~~ | arch_setup_new_exec That requires us to have hash__setup_new_exec prototype for all platforms. -aneesh