Variable efi_current_var is a pointer to a physical memory address that
becomes invalid after SetVirtualAddressMap(). Instead of converting it via
ConvertPointer() simply set it to NULL.

Fixes: b02a707152dc ("efi_loader: enable UEFI variables at runtime")
Signed-off-by: Heinrich Schuchardt <[email protected]>
---
 lib/efi_loader/efi_var_mem.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/efi_loader/efi_var_mem.c b/lib/efi_loader/efi_var_mem.c
index 1f13f18c2f..bfa8a56a8f 100644
--- a/lib/efi_loader/efi_var_mem.c
+++ b/lib/efi_loader/efi_var_mem.c
@@ -232,6 +232,7 @@ static void EFIAPI __efi_runtime
 efi_var_mem_notify_virtual_address_map(struct efi_event *event, void *context)
 {
        efi_convert_pointer(0, (void **)&efi_var_buf);
+       efi_current_var = NULL;
 }

 efi_status_t efi_var_mem_init(void)
--
2.20.1

Reply via email to