efi_loader: correct ExitBootServices()
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 11 Jun 2019 18:05:40 +0000 (20:05 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Fri, 14 Jun 2019 17:18:39 +0000 (19:18 +0200)
Always use EFI_EXIT() to return from the function.

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

index 275850a1a8f77556d0ef8e53ff120c50e807e50a..b26291b919c4729202b104d2a25a543a2b33ba19 100644 (file)
@@ -1933,16 +1933,19 @@ static efi_status_t EFIAPI efi_exit_boot_services(efi_handle_t image_handle,
                                                  efi_uintn_t map_key)
 {
        struct efi_event *evt;
+       efi_status_t ret = EFI_SUCCESS;
 
        EFI_ENTRY("%p, %zx", image_handle, map_key);
 
        /* Check that the caller has read the current memory map */
-       if (map_key != efi_memory_map_key)
-               return EFI_INVALID_PARAMETER;
+       if (map_key != efi_memory_map_key) {
+               ret = EFI_INVALID_PARAMETER;
+               goto out;
+       }
 
        /* Check if ExitBootServices has already been called */
        if (!systab.boottime)
-               return EFI_EXIT(EFI_SUCCESS);
+               goto out;
 
        /* Stop all timer related activities */
        timers_enabled = false;
@@ -1990,8 +1993,8 @@ static efi_status_t EFIAPI efi_exit_boot_services(efi_handle_t image_handle,
        /* Give the payload some time to boot */
        efi_set_watchdog(0);
        WATCHDOG_RESET();
-
-       return EFI_EXIT(EFI_SUCCESS);
+out:
+       return EFI_EXIT(ret);
 }
 
 /**