efi_loader: Clean up file size calculations
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Thu, 25 Mar 2021 19:55:16 +0000 (21:55 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Thu, 25 Mar 2021 20:03:51 +0000 (21:03 +0100)
We recently added a common function for calculating file size,
instead of copy pasting the code around.  Switch one of the
occurences over to the common function

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviwed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_loader/efi_boottime.c

index 8e8b0a9..4777b35 100644 (file)
@@ -1876,7 +1876,6 @@ static
 efi_status_t efi_load_image_from_file(struct efi_device_path *file_path,
                                      void **buffer, efi_uintn_t *size)
 {
-       struct efi_file_info *info = NULL;
        struct efi_file_handle *f;
        efi_status_t ret;
        u64 addr;
@@ -1887,18 +1886,7 @@ efi_status_t efi_load_image_from_file(struct efi_device_path *file_path,
        if (!f)
                return EFI_NOT_FOUND;
 
-       /* Get file size */
-       bs = 0;
-       EFI_CALL(ret = f->getinfo(f, (efi_guid_t *)&efi_file_info_guid,
-                                 &bs, info));
-       if (ret != EFI_BUFFER_TOO_SMALL) {
-               ret =  EFI_DEVICE_ERROR;
-               goto error;
-       }
-
-       info = malloc(bs);
-       EFI_CALL(ret = f->getinfo(f, (efi_guid_t *)&efi_file_info_guid, &bs,
-                                 info));
+       ret = efi_file_size(f, &bs);
        if (ret != EFI_SUCCESS)
                goto error;
 
@@ -1908,7 +1896,6 @@ efi_status_t efi_load_image_from_file(struct efi_device_path *file_path,
         * allocate a buffer as EFI_BOOT_SERVICES_DATA. The caller has to
         * update the reservation according to the image type.
         */
-       bs = info->file_size;
        ret = efi_allocate_pages(EFI_ALLOCATE_ANY_PAGES,
                                 EFI_BOOT_SERVICES_DATA,
                                 efi_size_in_pages(bs), &addr);
@@ -1925,7 +1912,6 @@ efi_status_t efi_load_image_from_file(struct efi_device_path *file_path,
        *size = bs;
 error:
        EFI_CALL(f->close(f));
-       free(info);
        return ret;
 }