On May 17, 2026 11:30:21 AM PDT, Richard Patel <[email protected]> wrote:
>IBT enforces that indirect branch targets land on an endbr
>instruction. The CPU enforces this by setting the 'WAIT_FOR_ENDBR'
>bit after executing an indirect branch/jump.
>
>The only relevant edge case with user IBT is signal handling:
>When entering/leaving a signal handler, the WAIT_FOR_ENDBR bit must
>be backed up/restored.
>
>IBT is not implemented for 32-bit and cannot be enabled using a
>32-bit syscall. However, a 64-bit thread could far jump into 32-bit.
>Therefore, 32-bit sigreturn must be banned until IBT supports that
>environment.
>
>Signed-off-by: Richard Patel <[email protected]>
>Based-on-patch-by: Yu-cheng Yu <[email protected]>
>Link: 
>https://lwn.net/ml/linux-kernel/[email protected]/
>---
> arch/x86/kernel/signal_32.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
>diff --git a/arch/x86/kernel/signal_32.c b/arch/x86/kernel/signal_32.c
>index e55cf19e68fe..7cb76d794366 100644
>--- a/arch/x86/kernel/signal_32.c
>+++ b/arch/x86/kernel/signal_32.c
>@@ -143,6 +143,11 @@ static bool ia32_restore_sigcontext(struct pt_regs *regs,
>       regs->ds = fixup_rpl(sc.ds);
> #endif
> 
>+#ifdef CONFIG_X86_USER_IBT
>+      if (current->thread.ibt)
>+              return false;
>+#endif
>+
>       return fpu__restore_sig(compat_ptr(sc.fpstate), 1);
> }
> 

Dumb question: is there any reason not to just enable it for 32 bits? It 
doesn't seem that it would be that big of a delta to Just Do It.™

That being said, I suspect the number of users will be very small if any.

Reply via email to