]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
efi_loader: fix efi_get_child_controllers()
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 7 Jul 2020 02:21:26 +0000 (04:21 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Sat, 11 Jul 2020 21:14:16 +0000 (23:14 +0200)
Don't call calloc(0, ..).
Consider return value of efi_get_child_controllers().

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_loader/efi_boottime.c

index 1591ad830078ff04080ce244a8ebcede307c7dbe..0b16554ba2307de91d483a1da9064f5a80480ae9 100644 (file)
@@ -3459,6 +3459,8 @@ static efi_status_t efi_get_child_controllers(
         * the buffer will be too large. But that does not harm.
         */
        *number_of_children = 0;
+       if (!count)
+               return EFI_SUCCESS;
        *child_handle_buffer = calloc(count, sizeof(efi_handle_t));
        if (!*child_handle_buffer)
                return EFI_OUT_OF_RESOURCES;
@@ -3536,10 +3538,12 @@ static efi_status_t EFIAPI efi_disconnect_controller(
                number_of_children = 1;
                child_handle_buffer = &child_handle;
        } else {
-               efi_get_child_controllers(efiobj,
-                                         driver_image_handle,
-                                         &number_of_children,
-                                         &child_handle_buffer);
+               r = efi_get_child_controllers(efiobj,
+                                             driver_image_handle,
+                                             &number_of_children,
+                                             &child_handle_buffer);
+               if (r != EFI_SUCCESS)
+                       return r;
        }
 
        /* Get the driver binding protocol */