Re: [PATCH RFC rebase 3/9] powerpc/64: Use barrier_nospec in syscall entry
From: Nicholas Piggin <npiggin@gmail.com>
Date: 2018-03-16 05:18:23
Also in:
lkml
On Thu, 15 Mar 2018 20:15:52 +0100 Michal Suchanek [off-list ref] wrote:
On powerpc syscall entry is done in assembly so patch in an explicit barrier_nospec.
Same comment as Linus for this -- the barriers are before the branch here, so is it possible the branch instruction can be speculative while the index is used to load the syscall table? Thanks, Nick
quoted hunk ↗ jump to hunk
Signed-off-by: Michal Suchanek <redacted> --- arch/powerpc/kernel/entry_64.S | 3 +++ 1 file changed, 3 insertions(+)diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 2cb5109a7ea3..7bfc4cf48af2 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S@@ -36,6 +36,7 @@ #include <asm/context_tracking.h> #include <asm/tm.h> #include <asm/ppc-opcode.h> +#include <asm/barrier.h> #include <asm/export.h> #ifdef CONFIG_PPC_BOOK3S #include <asm/exception-64s.h>@@ -159,6 +160,7 @@ system_call: /* label this so stack traces look sane */ andi. r11,r10,_TIF_SYSCALL_DOTRACE bne .Lsyscall_dotrace /* does not return */ cmpldi 0,r0,NR_syscalls + barrier_nospec bge- .Lsyscall_enosys .Lsyscall:@@ -319,6 +321,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR) ld r10,TI_FLAGS(r10) cmpldi r0,NR_syscalls + barrier_nospec blt+ .Lsyscall /* Return code is already in r3 thanks to do_syscall_trace_enter() */