aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Turner <andrew@FreeBSD.org>2022-05-21 10:45:41 +0000
committerAndrew Turner <andrew@FreeBSD.org>2022-05-21 10:45:41 +0000
commit0d6600b579be769b85f049ef421023316f21b5c3 (patch)
tree2fd1c5e26bd0a4beac864055d0940c7dd2ae9fcd
parent9cd45772a44f268ccb3e20caf7f3f764f6b5e1a1 (diff)
downloadsrc-0d6600b579be769b85f049ef421023316f21b5c3.tar.gz
src-0d6600b579be769b85f049ef421023316f21b5c3.zip
Set mm before passing it to the UEFI firmware
When reading the UEFI memory map we pass in a pointer to the memory to hold the map. Unfortunately it wasn't initialised before the first use so clang decided it was undefined behaviour so the entire loop was removed. This leads to everything in bi_load after this to also be removed as dead code. The next function after bi_load in the binary is efi_copy_init. The above caused us to enter efi_copy_init with a return address of the start of the function. Because of this it would enter an infinite loop of calling the function, allocating memory, then returning to the start of the function. PR: 264021
-rw-r--r--stand/efi/loader/bootinfo.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/stand/efi/loader/bootinfo.c b/stand/efi/loader/bootinfo.c
index ca7a2c8ce4b8..c7b682819a98 100644
--- a/stand/efi/loader/bootinfo.c
+++ b/stand/efi/loader/bootinfo.c
@@ -347,6 +347,7 @@ bi_load_efi_data(struct preloaded_file *kfp, bool exit_bs)
*/
sz = 0;
+ mm = NULL;
/*
* Matthew Garrett has observed at least one system changing the