• Ard Biesheuvel's avatar
    efi: Add missing __nocfi annotations to runtime wrappers · 99280413
    Ard Biesheuvel authored
    The EFI runtime wrappers are a sandbox for calling into EFI runtime
    services, which are invoked using indirect calls. When running with kCFI
    enabled, the compiler will require the target of any indirect call to be
    type annotated.
    
    Given that the EFI runtime services prototypes and calling convention
    are governed by the EFI spec, not the Linux kernel, adding such type
    annotations for firmware routines is infeasible, and so the compiler
    must be informed that prototype validation should be omitted.
    
    Add the __nocfi annotation at the appropriate places in the EFI runtime
    wrapper code to achieve this.
    
    Note that this currently only affects 32-bit ARM, given that other
    architectures that support both kCFI and EFI use an asm wrapper to call
    EFI runtime services, and this hides the indirect call from the
    compiler.
    
    Fixes: 1a4fec49 ("ARM: 9392/2: Support CLANG CFI")
    Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    99280413
runtime-wrappers.c 16.3 KB