Re: [PATCH] efi: Add missing __nocfi annotations to runtime wrappers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 04, 2024 at 11:26:51PM +0200, Ard Biesheuvel wrote:
> On Tue, 4 Jun 2024 at 23:05, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote:
> >
> > On Tue, Jun 4, 2024 at 5:56 PM Ard Biesheuvel <ardb+git@xxxxxxxxxx> wrote:
> >
> > > From: Ard Biesheuvel <ardb@xxxxxxxxxx>
> > >
> > > 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.
> > >
> > > Cc: Kees Cook <keescook@xxxxxxxxxxxx>
> > > Cc: Sami Tolvanen <samitolvanen@xxxxxxxxxx>
> > > Cc: Linus Walleij <linus.walleij@xxxxxxxxxx>
> > > Cc: Nathan Chancellor <nathan@xxxxxxxxxx>
> > > Signed-off-by: Ard Biesheuvel <ardb@xxxxxxxxxx>
> >
> > Thanks for looking into this Ard!
> > Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
> >
> > Maybe tag on:
> > Fixes: 1a4fec49efe5 ("ARM: 9392/2: Support CLANG CFI")
> >
> > So it goes into the v6.10-rc:s.
> >
> 
> Thanks, I've added these and pushed the result to efi/urgent.

You don't need to rebase to include it but just for the record, I tested
it as well and it resolves the crash I saw when booting under EFI in
QEMU with CONFIG_CFI_CLANG=y.

Tested-by: Nathan Chancellor <nathan@xxxxxxxxxx>

Cheers,
Nathan




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux