efi: Support for MOK variable config table
authorLenny Szubowicz <lszubowi@redhat.com>
Sat, 5 Sep 2020 01:31:05 +0000 (21:31 -0400)
committerArd Biesheuvel <ardb@kernel.org>
Wed, 16 Sep 2020 15:53:42 +0000 (18:53 +0300)
commit58c909022a5a56cd1d9e89c8c5461fd1f6a27bb5
treecdc1e962338043c159fb964f09528526b6c767ec
parent5c4c30f40ca246f83b6663984dcdcbfeb0f8b66f
efi: Support for MOK variable config table

Because of system-specific EFI firmware limitations, EFI volatile
variables may not be capable of holding the required contents of
the Machine Owner Key (MOK) certificate store when the certificate
list grows above some size. Therefore, an EFI boot loader may pass
the MOK certs via a EFI configuration table created specifically for
this purpose to avoid this firmware limitation.

An EFI configuration table is a much more primitive mechanism
compared to EFI variables and is well suited for one-way passage
of static information from a pre-OS environment to the kernel.

This patch adds initial kernel support to recognize, parse,
and validate the EFI MOK configuration table, where named
entries contain the same data that would otherwise be provided
in similarly named EFI variables.

Additionally, this patch creates a sysfs binary file for each
EFI MOK configuration table entry found. These files are read-only
to root and are provided for use by user space utilities such as
mokutil.

A subsequent patch will load MOK certs into the trusted platform
key ring using this infrastructure.

Signed-off-by: Lenny Szubowicz <lszubowi@redhat.com>
Link: https://lore.kernel.org/r/20200905013107.10457-2-lszubowi@redhat.com
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
arch/x86/kernel/setup.c
arch/x86/platform/efi/efi.c
drivers/firmware/efi/Makefile
drivers/firmware/efi/efi-init.c
drivers/firmware/efi/efi.c
drivers/firmware/efi/mokvar-table.c [new file with mode: 0644]
include/linux/efi.h