]> xenbits.xensource.com Git - people/pauldu/xen.git/commitdiff
EFI/Arm64: don't clobber DTB pointer
authorJan Beulich <jbeulich@suse.com>
Wed, 14 Oct 2020 12:13:16 +0000 (14:13 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 14 Oct 2020 12:13:16 +0000 (14:13 +0200)
read_section() needs to be more careful: efi_arch_use_config_file()
may have found a DTB file (but without modules), and there may be no DTB
specified in the EFI config file. In this case the pointer to the blob
must not be overwritten with NULL when no ".dtb" section is present
either.

Fixes: 8a71d50ed40b ("efi: Enable booting unified hypervisor/kernel/initrd images")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/common/efi/boot.c

index bacd551bb52b950739c9c1e857731ec06d230ecb..eb1ef91ba418debf59033b10a6b809d832bda57e 100644 (file)
@@ -637,11 +637,14 @@ static bool __init read_section(const EFI_LOADED_IMAGE *image,
                                 const CHAR16 *name, struct file *file,
                                 const char *options)
 {
-    file->ptr = pe_find_section(image->ImageBase, image->ImageSize,
-                                name, &file->size);
-    if ( !file->ptr )
+    const void *ptr = pe_find_section(image->ImageBase, image->ImageSize,
+                                      name, &file->size);
+
+    if ( !ptr )
         return false;
 
+    file->ptr = ptr;
+
     handle_file_info(name, file, options);
 
     return true;