On 13.08.20 10:05, AKASHI Takahiro wrote:
> Under the new file-based variable implementation, the secure state
> is always and falsely set to 0 (hence, the secure boot gets disabled)
> after the reboot even if PK (and other signature database) has already
> been enrolled in the previous boot.
>
> This is because the secure state is set up *before* loading non-volatile
> variables' values from saved data.
>
> This patch fixes the order of variable initialization and secure state
> initialization.
>
> Signed-off-by: AKASHI Takahiro <[email protected]>
> Fixes: 5f7dcf079de8 ("efi_loader: UEFI variable persistence")

Thanks for the correction.

Reviewed-by: Heinrich Schuchardt <[email protected]>

> ---
>  lib/efi_loader/efi_variable.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/lib/efi_loader/efi_variable.c b/lib/efi_loader/efi_variable.c
> index 282d542a096c..a10b9caa8b03 100644
> --- a/lib/efi_loader/efi_variable.c
> +++ b/lib/efi_loader/efi_variable.c
> @@ -508,10 +508,6 @@ efi_status_t efi_init_variables(void)
>       if (ret != EFI_SUCCESS)
>               return ret;
>
> -     ret = efi_init_secure_state();
> -     if (ret != EFI_SUCCESS)
> -             return ret;
> -
>       if (IS_ENABLED(CONFIG_EFI_VARIABLES_PRESEED)) {
>               ret = efi_var_restore((struct efi_var_file *)
>                                     __efi_var_file_begin);
> @@ -519,5 +515,9 @@ efi_status_t efi_init_variables(void)
>                       log_err("Invalid EFI variable seed\n");
>       }
>
> -     return efi_var_from_file();
> +     ret = efi_var_from_file();
> +     if (ret != EFI_SUCCESS)
> +             return ret;
> +
> +     return efi_init_secure_state();
>  }
>

Reply via email to