Re: [PATCH 4/6] efi: Get the secure boot status [ver #2]

From: Mark Rutland
Date: Wed Nov 23 2016 - 05:48:47 EST


On Wed, Nov 23, 2016 at 12:22:57AM +0000, David Howells wrote:
> @@ -1158,6 +1158,8 @@ struct boot_params *efi_main(struct efi_config *c,
> else
> setup_boot_services32(efi_early);
>
> + boot_params->secure_boot = (efi_get_secureboot(sys_table) == 1);

In the arm stub's efi_entry(), we fail-safe, and assume secure boot for any
non-zero status (including errors). e.g.

secure_boot = efi_get_secureboot(sys_table);
if (secure_boot > 0)
pr_efi(sys_table, "UEFI Secure Boot is enabled.\n");

if (secure_boot < 0) {
pr_efi_err(sys_table,
"could not determine UEFI Secure Boot status.\n");
}

/*
* Unauthenticated device tree data is a security hazard, so
* ignore 'dtb=' unless UEFI Secure Boot is disabled.
*/
if (secure_boot != 0 && strstr(cmdline_ptr, "dtb=")) {
pr_efi(sys_table, "Ignoring DTB from command line.\n");

... should we not do likewise here, e.g.

int secure_boot = efi_get_secureboot(sys_table);

if (secure_boot > 0)
pr_efi(sys_table, "UEFI Secure Boot is enabled.\n");
if (secure_boot < 0)
pr_efi_err(sys_table,
"could not determine UEFI Secure Boot status.\n");

/*
* Fail-safe in the case of an error determining the secure boot
* status.
*/
boot_params->secure_boot = (secure_boot != 0);

... ?

Thanks,
Mark.