]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
efi_loader: Change efi_dp_from_mem() to use size
authorMoritz Fischer <moritzf@google.com>
Mon, 4 Nov 2024 01:49:34 +0000 (01:49 +0000)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sat, 9 Nov 2024 08:56:45 +0000 (09:56 +0100)
All call sites are using size rather than end addresses,
so instead - as previously done - calculating an end address
everywhere, just modify the function to use size and internally
calculate the end address

Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Patrick Wildt <pwildt@google.com>
Signed-off-by: Moritz Fischer <moritzf@google.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
include/efi_loader.h
lib/efi_loader/efi_bootbin.c
lib/efi_loader/efi_device_path.c

index 291eca5c07789d8f0eb6708055fad8ea01024ed2..39809eac1bc8ec76cea6c58745e95db5f3063de6 100644 (file)
@@ -858,7 +858,7 @@ struct efi_device_path *efi_dp_from_file(const struct efi_device_path *dp,
 struct efi_device_path *efi_dp_from_eth(void);
 struct efi_device_path *efi_dp_from_mem(uint32_t mem_type,
                                        uint64_t start_address,
-                                       uint64_t end_address);
+                                       size_t size);
 /* Determine the last device path node that is not the end node. */
 const struct efi_device_path *efi_dp_last_node(
                        const struct efi_device_path *dp);
index bf38392fac38dd71476542868bba0b3337ca5d0c..a87006b3c0ede5d33be16790cedfb183e1126491 100644 (file)
@@ -137,7 +137,6 @@ efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
                 */
                file_path = efi_dp_from_mem(EFI_RESERVED_MEMORY_TYPE,
                                            (uintptr_t)source_buffer,
-                                           (uintptr_t)source_buffer +
                                            source_size);
                /*
                 * Make sure that device for device_path exist
index d7444588aa00ee397fbad69dc0284989be7e1f3a..ee387e1dfd4b8e2438e973b7cdfef85f63b459a8 100644 (file)
@@ -977,7 +977,7 @@ struct efi_device_path __maybe_unused *efi_dp_from_eth(void)
 /* Construct a device-path for memory-mapped image */
 struct efi_device_path *efi_dp_from_mem(uint32_t memory_type,
                                        uint64_t start_address,
-                                       uint64_t end_address)
+                                       size_t size)
 {
        struct efi_device_path_memory *mdp;
        void *buf, *start;
@@ -992,7 +992,7 @@ struct efi_device_path *efi_dp_from_mem(uint32_t memory_type,
        mdp->dp.length = sizeof(*mdp);
        mdp->memory_type = memory_type;
        mdp->start_address = start_address;
-       mdp->end_address = end_address;
+       mdp->end_address = start_address + size;
        buf = &mdp[1];
 
        *((struct efi_device_path *)buf) = END;
@@ -1073,8 +1073,7 @@ efi_status_t efi_dp_from_name(const char *dev, const char *devnr,
                efi_get_image_parameters(&image_addr, &image_size);
 
                dp = efi_dp_from_mem(EFI_RESERVED_MEMORY_TYPE,
-                                    (uintptr_t)image_addr,
-                                    (uintptr_t)image_addr + image_size);
+                                    (uintptr_t)image_addr, image_size);
        } else if (IS_ENABLED(CONFIG_NETDEVICES) && !strcmp(dev, "Net")) {
                dp = efi_dp_from_eth();
        } else if (!strcmp(dev, "Uart")) {