efi_loader: Implement FileLoad2 for initramfs loading
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Fri, 21 Feb 2020 07:55:45 +0000 (09:55 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Fri, 28 Feb 2020 18:37:14 +0000 (19:37 +0100)
commitec80b4735a593961fe701cc3a5d717d4739b0fd0
tree95f61efe72fd10b5fb77ad5b9d502baf82573565
parent12fdbbe860f395575f360f0c03d84bce61a9a212
efi_loader: Implement FileLoad2 for initramfs loading

Following kernel's proposal for an arch-agnostic initrd loading
mechanism [1] let's implement the U-boot counterpart.
This new approach has a number of advantages compared to what we did up
to now. The file is loaded into memory only when requested limiting the
area of TOCTOU attacks. Users will be allowed to place the initramfs
file on any u-boot accessible partition instead of just the ESP one.
Finally this is an attempt of a generic interface across architectures
in the linux kernel so it makes sense to support that.

The file location is intentionally only supported as a config option
argument(CONFIG_EFI_INITRD_FILESPEC), in an effort to enhance security.
Although U-boot is not responsible for verifying the integrity of the
initramfs, we can enhance the offered security by only accepting a
built-in option, which will be naturally verified by UEFI Secure Boot.
This can easily change in the future if needed and configure that via ENV
or UEFI variable.

[1] https://lore.kernel.org/linux-efi/20200207202637.GA3464906@rani.riverdale.lan/T/#m4a25eb33112fab7a22faa0fd65d4d663209af32f

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
cmd/efidebug.c
include/efi_api.h
include/efi_load_initrd.h [new file with mode: 0644]
include/efi_loader.h
lib/efi_loader/Kconfig
lib/efi_loader/Makefile
lib/efi_loader/efi_load_initrd.c [new file with mode: 0644]
lib/efi_loader/efi_setup.c