[<prev] [next>] [day] [month] [year] [list]
Message-ID: <158685244915.28353.17265902086997954787.tip-bot2@tip-bot2>
Date: Tue, 14 Apr 2020 08:20:49 -0000
From: "tip-bot2 for Gary Lin" <tip-bot2@...utronix.de>
To: linux-tip-commits@...r.kernel.org
Cc: Gary Lin <glin@...e.com>, Ard Biesheuvel <ardb@...nel.org>,
Ingo Molnar <mingo@...nel.org>, x86 <x86@...nel.org>,
LKML <linux-kernel@...r.kernel.org>
Subject: [tip: efi/urgent] efi/x86: Fix the deletion of variables in mixed mode
The following commit has been merged into the efi/urgent branch of tip:
Commit-ID: a4b81ccfd4caba017d2b84720b6de4edd16911a0
Gitweb: https://git.kernel.org/tip/a4b81ccfd4caba017d2b84720b6de4edd16911a0
Author: Gary Lin <glin@...e.com>
AuthorDate: Thu, 09 Apr 2020 15:04:33 +02:00
Committer: Ingo Molnar <mingo@...nel.org>
CommitterDate: Tue, 14 Apr 2020 08:32:16 +02:00
efi/x86: Fix the deletion of variables in mixed mode
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")
Signed-off-by: Gary Lin <glin@...e.com>
Signed-off-by: Ard Biesheuvel <ardb@...nel.org>
Signed-off-by: Ingo Molnar <mingo@...nel.org>
Link: https://lore.kernel.org/r/20200408081606.1504-1-glin@suse.com
Link: https://lore.kernel.org/r/20200409130434.6736-9-ardb@kernel.org
---
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 211bb93..e0e2e81 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,
Powered by blists - more mailing lists