[U-Boot] [PATCH] efi_loader: LocateHandle should return EFI_NOT_FOUND if none found

Heinrich Schuchardt xypron.debian at gmx.de
Sun Aug 6 17:27:27 UTC 2017


On 08/06/2017 06:23 PM, Rob Clark wrote:
> Spotted this debugging OpenBSD's bootloader in qemu.  (Wouldn't really
> fix anything, the problem was not having any disks, but we should
> probably return the correct error code.)
> 
> Signed-off-by: Rob Clark <robdclark at gmail.com>
> ---
>  lib/efi_loader/efi_boottime.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
> index 5ff2d2d4b0..ada119325c 100644
> --- a/lib/efi_loader/efi_boottime.c
> +++ b/lib/efi_loader/efi_boottime.c
> @@ -643,6 +643,9 @@ static efi_status_t EFIAPI efi_locate_handle(
>  	}
>  
>  	*buffer_size = size;
> +	if (size == 0)
> +		return EFI_NOT_FOUND;
> +
>  	return EFI_SUCCESS;
>  }
>  
> 

Thanks for spotting this.

We can do the test earlier, if we move
	*buffer_size = size;
to another line.

test:

...
                        size += sizeof(void*);
                }
        }

        if (*buffer_size < size) {
	        *buffer_size = size;
                return EFI_BUFFER_TOO_SMALL;
	}
        *buffer_size = size;
	if (size == 0)
		return EFI_NOT_FOUND;

        /* Then fill the array */
...

Best regards

Heinrich


More information about the U-Boot mailing list