[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging] efi: Call FreePages() only if needed



commit 7fddedd530561797d8ce5fba78e83cc9cc6b58dd
Author:     Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
AuthorDate: Tue Aug 12 09:58:07 2025 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Aug 12 11:40:28 2025 +0200

    efi: Call FreePages() only if needed
    
    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.
    
    Fixes: 8a71d50ed40b ("efi: Enable booting unified hypervisor/kernel/initrd 
images")
    Fixes: 04be2c3a0678 ("efi/boot.c: add file.need_to_free")
    Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
    Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Acked-by Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx>
---
 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 778a39cc48..50ff1d1bd2 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);
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.