On 8/5/25 12:32, Ross Lagerwall wrote:
If the config file is builtin, cfg.addr will be zero but Xen
unconditionally calls FreePages() on the address.
Xen may also call FreePages() with a zero address if blexit() is called
after this point since cfg.need_to_free is not set to false.
The UEFI specification does not say whether calling FreePages() with a
zero address is allowed so let's be cautious and use cfg.need_to_free
properly.
Signed-off-by: Ross Lagerwall <ross.lagerw...@citrix.com>
---
xen/common/efi/boot.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index 778a39cc48e6..50ff1d1bd225 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1534,8 +1534,11 @@ void EFIAPI __init noreturn efi_start(EFI_HANDLE
ImageHandle,
efi_arch_cfg_file_late(loaded_image, dir_handle, section.s);
- efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
- cfg.addr = 0;
+ if ( cfg.need_to_free )
+ {
+ efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
+ cfg.need_to_free = false;
+ }
if ( dir_handle )
dir_handle->Close(dir_handle);
Acked-by Daniel P. Smith <dpsm...@apertussolutions.com>