Michal Suchánek's on March 25, 2020 5:30 am: > On Tue, Mar 24, 2020 at 06:54:20PM +1000, Nicholas Piggin wrote: >> Michal Suchanek's on March 19, 2020 10:19 pm: >> > diff --git a/arch/powerpc/kernel/signal.c b/arch/powerpc/kernel/signal.c >> > index 4b0152108f61..a264989626fd 100644 >> > --- a/arch/powerpc/kernel/signal.c >> > +++ b/arch/powerpc/kernel/signal.c >> > @@ -247,7 +247,6 @@ static void do_signal(struct task_struct *tsk) >> > sigset_t *oldset = sigmask_to_save(); >> > struct ksignal ksig = { .sig = 0 }; >> > int ret; >> > - int is32 = is_32bit_task(); >> > >> > BUG_ON(tsk != current); >> > >> > @@ -277,7 +276,7 @@ static void do_signal(struct task_struct *tsk) >> > >> > rseq_signal_deliver(&ksig, tsk->thread.regs); >> > >> > - if (is32) { >> > + if (is_32bit_task()) { >> > if (ksig.ka.sa.sa_flags & SA_SIGINFO) >> > ret = handle_rt_signal32(&ksig, oldset, tsk); >> > else >> >> Unnecessary? >> >> > diff --git a/arch/powerpc/kernel/syscall_64.c b/arch/powerpc/kernel/syscall_64.c >> > index 87d95b455b83..2dcbfe38f5ac 100644 >> > --- a/arch/powerpc/kernel/syscall_64.c >> > +++ b/arch/powerpc/kernel/syscall_64.c >> > @@ -24,7 +24,6 @@ notrace long system_call_exception(long r3, long r4, long r5, >> > long r6, long r7, long r8, >> > unsigned long r0, struct pt_regs *regs) >> > { >> > - unsigned long ti_flags; >> > syscall_fn f; >> > >> > if (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG)) >> > @@ -68,8 +67,7 @@ notrace long system_call_exception(long r3, long r4, long r5, >> > >> > local_irq_enable(); >> > >> > - ti_flags = current_thread_info()->flags; >> > - if (unlikely(ti_flags & _TIF_SYSCALL_DOTRACE)) { >> > + if (unlikely(current_thread_info()->flags & _TIF_SYSCALL_DOTRACE)) { >> > /* >> > * We use the return value of do_syscall_trace_enter() as the >> > * syscall number. If the syscall was rejected for any reason >> > @@ -94,7 +92,7 @@ notrace long system_call_exception(long r3, long r4, long r5, >> > /* May be faster to do array_index_nospec? */ >> > barrier_nospec(); >> > >> > - if (unlikely(ti_flags & _TIF_32BIT)) { >> > + if (unlikely(is_32bit_task())) { >> >> Problem is, does this allow the load of ti_flags to be used for both >> tests, or does test_bit make it re-load? >> >> This could maybe be fixed by testing if(IS_ENABLED(CONFIG_COMPAT) && > Both points already discussed here: Agh, I'm hopeless. I don't think it really resolves this issue. But probably don't have time to look at generated asm, and might never because it won't really hit LE unless we add a 32-bit ABI. It's pretty minor though either way. Sorry for being difficult, I really do like your patches :) Thanks, Nick