From: Mukesh Kumar Chaurasiya (IBM) Date: Mon, 15 Jun 2026 16:26:17 +0000 (+0530) Subject: powerpc: Restore KUAP registers on syscall restart exit X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4e1187e12de40b5301977b2476d21b569358dafb;p=thirdparty%2Fkernel%2Flinux.git powerpc: Restore KUAP registers on syscall restart exit During a syscall restart, block KUAP so that pending interrupts can be replayed. The original KUAP state is not restored before returning to userspace, causing subsequent userspace accesses to fault and eventually trigger bad_access_pkey(), crashing the kernel. The original KUAP register values are already saved in arch_enter_from_user_mode(). Restore them on the syscall restart exit path before returning to userspace. Fixes: bee25f97ad24 ("powerpc: Enable GENERIC_ENTRY feature") Reported-by: Sayali Patil Closes: https://lore.kernel.org/linuxppc-dev/fcd11556-27ac-4cd7-8c77-50716dec6985@linux.ibm.com/ Signed-off-by: Mukesh Kumar Chaurasiya (IBM) Tested-by: Sayali Patil [Maddy: Added Closes tag] Signed-off-by: Madhavan Srinivasan Link: https://patch.msgid.link/20260615162617.2861795-1-mkchauras@gmail.com --- diff --git a/arch/powerpc/kernel/interrupt.c b/arch/powerpc/kernel/interrupt.c index 89a999be1352..f04978080837 100644 --- a/arch/powerpc/kernel/interrupt.c +++ b/arch/powerpc/kernel/interrupt.c @@ -166,6 +166,7 @@ again: goto again; } + kuap_user_restore(regs); regs->exit_result |= regs->exit_flags; return regs->exit_result;