During syscall restart, we block the kuap as we need to replay
interrupts. Which are not restored when we exit to the user, hence we
get a fault which ends up with `bad_access_pkey` and hence crashing the
kernel.
We have already stored the kuap values during the entry, just restore
them when we exit.
Applies on linux-next (next-20260610).
Fixes: bee25f97ad24 ("powerpc: Enable GENERIC_ENTRY feature")
Reported-by: Sayali Patil <redacted>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <redacted>
---
arch/powerpc/kernel/interrupt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/interrupt.c b/arch/powerpc/kernel/interrupt.c
index 89a999be1352..159901d6ba8c 100644
--- a/arch/powerpc/kernel/interrupt.c
+++ b/arch/powerpc/kernel/interrupt.c
@@ -165,7 +165,7 @@ notrace unsigned long syscall_exit_restart(unsigned long r3, struct pt_regs *reg
local_irq_disable();
goto again;
}
-
+ kuap_user_restore(regs);
regs->exit_result |= regs->exit_flags;
return regs->exit_result;
--
2.54.0