Re: [PATCH] efi/x86: Fix the deletion of variables in mixed mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 8 Apr 2020 at 10:18, Gary Lin <glin@xxxxxxxx> wrote:
>
> efi_thunk_set_variable() treated the NULL "data" pointer as an invalid
> parameter, and this broke the deletion of variables in mixed mode.
> This commit fixes the check of data so that the userspace program can
> delete a variable in mixed mode.
>
> Fixes: 8319e9d5ad98ffcc ("efi/x86: Handle by-ref arguments covering multiple pages in mixed mode")
> Cc: linux-efi@xxxxxxxxxxxxxxx
> Cc: Ard Biesheuvel <ardb@xxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Signed-off-by: Gary Lin <glin@xxxxxxxx>

Thanks Gary.

I'll queue this in efi/urgent.



> ---
>  arch/x86/platform/efi/efi_64.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
> index 211bb9358b73..e0e2e8136cf5 100644
> --- a/arch/x86/platform/efi/efi_64.c
> +++ b/arch/x86/platform/efi/efi_64.c
> @@ -638,7 +638,7 @@ efi_thunk_set_variable(efi_char16_t *name, efi_guid_t *vendor,
>         phys_vendor = virt_to_phys_or_null(vnd);
>         phys_data = virt_to_phys_or_null_size(data, data_size);
>
> -       if (!phys_name || !phys_data)
> +       if (!phys_name || (data && !phys_data))
>                 status = EFI_INVALID_PARAMETER;
>         else
>                 status = efi_thunk(set_variable, phys_name, phys_vendor,
> @@ -669,7 +669,7 @@ efi_thunk_set_variable_nonblocking(efi_char16_t *name, efi_guid_t *vendor,
>         phys_vendor = virt_to_phys_or_null(vnd);
>         phys_data = virt_to_phys_or_null_size(data, data_size);
>
> -       if (!phys_name || !phys_data)
> +       if (!phys_name || (data && !phys_data))
>                 status = EFI_INVALID_PARAMETER;
>         else
>                 status = efi_thunk(set_variable, phys_name, phys_vendor,
> --
> 2.25.1
>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux