Messages in this thread Patch in this message | | | From | Jiashuo Liang <> | Subject | [PATCH] signal/x86: Don't send SIGSEGV twice on SEGV_PKUERR | Date | Tue, 1 Jun 2021 16:52:03 +0800 |
| |
Before this patch, the __bad_area_nosemaphore function calls both force_sig_pkuerr and force_sig_fault when handling SEGV_PKUERR. This does not cause problems because the second signal is filtered by the legacy_queue check in __send_signal. But it causes the kernel to do unnecessary work.
This patch should fix it.
Fixes: 9db812dbb29d ("signal/x86: Call force_sig_pkuerr from __bad_area_nosemaphore") Suggested-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Jiashuo Liang <liangjs@pku.edu.cn> --- arch/x86/mm/fault.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 1c548ad00752..6bda7f67d737 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -836,8 +836,8 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code, if (si_code == SEGV_PKUERR) force_sig_pkuerr((void __user *)address, pkey); - - force_sig_fault(SIGSEGV, si_code, (void __user *)address); + else + force_sig_fault(SIGSEGV, si_code, (void __user *)address); local_irq_disable(); } -- 2.31.1
| |