[PATCH 4/5] efi_loader: fix the return codes of UninstallProtocol
Heinrich Schuchardt
xypron.glpk at gmx.de
Sun Jun 18 09:08:39 CEST 2023
On 6/15/23 16:39, Ilias Apalodimas wrote:
> Up to now we did not check the return value of DisconnectController.
> A previous patch is fixing that taking into account what happened during
> the controller disconnect. But that check takes place before our code
> is trying to figure out if the interface exists to begin with. In case a
> driver is not allowed to unbind -- e.g returning EFI_DEVICE_ERROR, we
> will end up returning that error instead of EFI_NOT_FOUND.
>
> Add an extra check on the top of the function to make sure the protocol
> interface exists before trying to disconnect any drivers
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
> lib/efi_loader/efi_boottime.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
> index b148824c7ec5..d6d52d4bbac8 100644
> --- a/lib/efi_loader/efi_boottime.c
> +++ b/lib/efi_loader/efi_boottime.c
> @@ -1373,6 +1373,8 @@ static efi_status_t efi_uninstall_protocol
> r = efi_search_protocol(handle, protocol, &handler);
> if (r != EFI_SUCCESS)
> goto out;
> + if (handler->protocol_interface != protocol_interface)
> + return EFI_NOT_FOUND;
> /* Disconnect controllers */
> r = efi_disconnect_all_drivers(handle, NULL, NULL);
> if (r != EFI_SUCCESS) {
More information about the U-Boot
mailing list