powerpc/signal64: Replace restore_sigcontext() w/ unsafe_restore_sigcontext()
authorChristopher M. Riedl <cmr@codefail.de>
Sat, 27 Feb 2021 01:12:56 +0000 (19:12 -0600)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 29 Mar 2021 01:49:47 +0000 (12:49 +1100)
commit193323e1009437c0885240e75ca71f7963e4a006
tree4bda5c53393540d31b4da2bbe81edd3bb8892362
parent7bb081c8f043ab166f8c6f26fca744821217dad7
powerpc/signal64: Replace restore_sigcontext() w/ unsafe_restore_sigcontext()

Previously restore_sigcontext() performed a costly KUAP switch on every
uaccess operation. These repeated uaccess switches cause a significant
drop in signal handling performance.

Rewrite restore_sigcontext() to assume that a userspace read access
window is open by replacing all uaccess functions with their 'unsafe'
versions. Modify the callers to first open, call
unsafe_restore_sigcontext(), and then close the uaccess window.

Signed-off-by: Christopher M. Riedl <cmr@codefail.de>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210227011259.11992-8-cmr@codefail.de
arch/powerpc/kernel/signal_64.c