[PATCH v8] arm64: Use static call trampolines when kCFI is enabled
Catalin Marinas
catalin.marinas at arm.com
Wed Apr 1 07:31:59 PDT 2026
On Wed, Apr 01, 2026 at 02:03:22PM +0200, Ard Biesheuvel wrote:
>
> On Wed, 1 Apr 2026, at 12:03, Will Deacon wrote:
> > On Tue, 31 Mar 2026 13:04:23 +0200, Ard Biesheuvel wrote:
> >> Implement arm64 support for the 'unoptimized' static call variety, which
> >> routes all calls through a trampoline that performs a tail call to the
> >> chosen function, and wire it up for use when kCFI is enabled. This works
> >> around an issue with kCFI and generic static calls, where the prototypes
> >> of default handlers such as __static_call_nop() and __static_call_ret0()
> >> don't match the expected prototype of the call site, resulting in kCFI
> >> false positives [0].
> >>
> >> [...]
> >
> > Applied to arm64 (for-next/fixes), thanks!
> >
> > [1/1] arm64: Use static call trampolines when kCFI is enabled
> > https://git.kernel.org/arm64/c/e70c2335f889
> >
>
> Thanks,
>
> I just spotted that the function name gets stringified twice inadvertently.
>
> E.g., the assembler may see
>
> .quad "__static_call_return0"
>
> rather than the intended
>
> .quad __static_call_return0
>
> The assembler does not seem to care, and still emits an ABS64 relocation against the correct symbol, but it is definitely unintentional.
>
> I can send a follow-up fix if you prefer, or you could just tweak the patch in place:
>
> --- a/arch/arm64/include/asm/static_call.h
> +++ b/arch/arm64/include/asm/static_call.h
> @@ -16,7 +16,7 @@
> " .popsection \n" \
> " .pushsection .rodata, \"a\" \n" \
> " .align 3 \n" \
> - "1: .quad " #target " \n" \
> + "1: .quad " target " \n" \
> " .popsection \n")
Not sure Will is going to look at this until next week. I folded it into
the arm64 for-next/fixes branch and pushed out.
--
Catalin
More information about the linux-arm-kernel
mailing list