[PATCH v2 6/6] efi_loader: always initialize the secure boot state

AKASHI Takahiro takahiro.akashi at linaro.org
Fri Aug 27 05:53:36 CEST 2021


On Thu, Aug 26, 2021 at 03:48:05PM +0200, Heinrich Schuchardt wrote:
> Even if we cannot read the variable store from disk we still need to
> initialize the secure boot state.
> 
> Don't continue to boot if the variable preseed is invalid as this indicates
> that the variable store has been tampered.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> v2:
> 	no change
> ---
>  lib/efi_loader/efi_variable.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/lib/efi_loader/efi_variable.c b/lib/efi_loader/efi_variable.c
> index 80996d0f47..6d92229e2a 100644
> --- a/lib/efi_loader/efi_variable.c
> +++ b/lib/efi_loader/efi_variable.c
> @@ -427,13 +427,17 @@ efi_status_t efi_init_variables(void)
>  	if (IS_ENABLED(CONFIG_EFI_VARIABLES_PRESEED)) {
>  		ret = efi_var_restore((struct efi_var_file *)
>  				      __efi_var_file_begin, true);
> -		if (ret != EFI_SUCCESS)
> +		if (ret != EFI_SUCCESS) {
>  			log_err("Invalid EFI variable seed\n");
> +			return ret;
> +		}
>  	}
> -
> -	ret = efi_var_from_file();
> +	ret = efi_init_secure_state();
>  	if (ret != EFI_SUCCESS)
>  		return ret;
>  
> -	return efi_init_secure_state();
> +	/* Don't stop booting if variable store is not available */
> +	efi_var_from_file();

I think we have to think about two different cases:
1) there is no "variable store" file available.
2) it does exists, but reading from it (efi_var_restore()) failed

For (2), we should return with an error as in the case of
CONFIG_EFI_VARIABLES_PRESEED.
Otherwise, the behavior is inconsistent.

- Takahiro Akashi

> +
> +	return EFI_SUCCESS;
>  }
> -- 
> 2.30.2
> 


More information about the U-Boot mailing list