[tip:,efi/urgent] efivars: respect EFI_UNSUPPORTED return from firmware
diff mbox series

Message ID 161616054960.398.616542925097476806.tip-bot2@tip-bot2
State New, archived
Headers show
Series
  • [tip:,efi/urgent] efivars: respect EFI_UNSUPPORTED return from firmware
Related show

Commit Message

tip-bot2 for Michal Suchanek March 19, 2021, 1:29 p.m. UTC
The following commit has been merged into the efi/urgent branch of tip:

Commit-ID:     483028edacab374060d93955382b4865a9e07cba
Gitweb:        https://git.kernel.org/tip/483028edacab374060d93955382b4865a9e07cba
Author:        Shawn Guo <shawn.guo@linaro.org>
AuthorDate:    Wed, 17 Mar 2021 14:36:06 +08:00
Committer:     Ard Biesheuvel <ardb@kernel.org>
CommitterDate: Wed, 17 Mar 2021 09:40:24 +01:00

efivars: respect EFI_UNSUPPORTED return from firmware

As per UEFI spec 2.8B section 8.2, EFI_UNSUPPORTED may be returned by
EFI variable runtime services if no variable storage is supported by
firmware.  In this case, there is no point for kernel to continue
efivars initialization.  That said, efivar_init() should fail by
returning an error code, so that efivarfs will not be mounted on
/sys/firmware/efi/efivars at all.  Otherwise, user space like efibootmgr
will be confused by the EFIVARFS_MAGIC seen there, while EFI variable
calls cannot be made successfully.

Cc: <stable@vger.kernel.org> # v5.10+
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 drivers/firmware/efi/vars.c | 4 ++++
 1 file changed, 4 insertions(+)

Patch
diff mbox series

diff --git a/drivers/firmware/efi/vars.c b/drivers/firmware/efi/vars.c
index 41c1d00..abdc8a6 100644
--- a/drivers/firmware/efi/vars.c
+++ b/drivers/firmware/efi/vars.c
@@ -485,6 +485,10 @@  int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *),
 			}
 
 			break;
+		case EFI_UNSUPPORTED:
+			err = -EOPNOTSUPP;
+			status = EFI_NOT_FOUND;
+			break;
 		case EFI_NOT_FOUND:
 			break;
 		default: