]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc: Save caller r3 prior to system_call_exception
authorRohan McLure <rmclure@linux.ibm.com>
Wed, 21 Sep 2022 06:55:42 +0000 (16:55 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 26 Sep 2022 13:00:14 +0000 (23:00 +1000)
commitc4ff085b6b81787dd85bc444080218480e051a38
tree72ab274a06583565a00c0f757160d1042116b747
parent340b392378997d5d3b6a0644b96bdc1b34d4c70d
powerpc: Save caller r3 prior to system_call_exception

This reverts commit 6265760512f3 ("powerpc/syscall: Save r3 in regs->orig_r3
").

Save caller's original r3 state to the kernel stackframe before entering
system_call_exception. This allows for user registers to be cleared by
the time system_call_exception is entered, reducing the influence of
user registers on speculation within the kernel.

Prior to this commit, orig_r3 was saved at the beginning of
system_call_exception. Instead, save orig_r3 while the user value is
still live in r3.

Also replicate this early save in 32-bit. A similar save was removed in
commit a1db8ba18ebb ("powerpc/syscall: implement system call entry/exit
logic in C for PPC32") when 32-bit adopted system_call_exception. Revert
its removal of orig_r3 saves.

Signed-off-by: Rohan McLure <rmclure@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220921065605.1051927-3-rmclure@linux.ibm.com
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/interrupt_64.S
arch/powerpc/kernel/syscall.c