From patchwork Fri Jan 10 07:20:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 239367 List-Id: U-Boot discussion From: xypron.glpk at gmx.de (Heinrich Schuchardt) Date: Fri, 10 Jan 2020 08:20:17 +0100 Subject: [PATCH 1/1] efi_driver: fix efi_uc_stop() Message-ID: <20200110072017.232153-1-xypron.glpk@gmx.de> Use the correct protocol in efi_uc_stop() when detaching the driver from the controller. Change the block IO unit test for the block device driver to throw an error instead of a todo if teardown fails. Signed-off-by: Heinrich Schuchardt --- lib/efi_driver/efi_uclass.c | 7 ++++--- lib/efi_selftest/efi_selftest_block_device.c | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) -- 2.24.1 diff --git a/lib/efi_driver/efi_uclass.c b/lib/efi_driver/efi_uclass.c index b14746e6b1..40269b00dc 100644 --- a/lib/efi_driver/efi_uclass.c +++ b/lib/efi_driver/efi_uclass.c @@ -197,7 +197,8 @@ static efi_status_t EFIAPI efi_uc_stop( efi_status_t ret; efi_uintn_t count; struct efi_open_protocol_info_entry *entry_buffer; - efi_guid_t *guid_controller = NULL; + struct efi_driver_binding_extended_protocol *bp = + (struct efi_driver_binding_extended_protocol *)this; EFI_ENTRY("%p, %pUl, %zu, %p", this, controller_handle, number_of_children, child_handle_buffer); @@ -217,7 +218,7 @@ static efi_status_t EFIAPI efi_uc_stop( /* Destroy all children */ ret = EFI_CALL(systab.boottime->open_protocol_information( - controller_handle, guid_controller, + controller_handle, bp->ops->protocol, &entry_buffer, &count)); if (ret != EFI_SUCCESS) goto out; @@ -237,7 +238,7 @@ static efi_status_t EFIAPI efi_uc_stop( /* Detach driver from controller */ ret = EFI_CALL(systab.boottime->close_protocol( - controller_handle, guid_controller, + controller_handle, bp->ops->protocol, this->driver_binding_handle, controller_handle)); out: return EFI_EXIT(ret); diff --git a/lib/efi_selftest/efi_selftest_block_device.c b/lib/efi_selftest/efi_selftest_block_device.c index 644c5ade21..d98a854e6d 100644 --- a/lib/efi_selftest/efi_selftest_block_device.c +++ b/lib/efi_selftest/efi_selftest_block_device.c @@ -257,9 +257,9 @@ static int teardown(void) disk_handle, &block_io_protocol_guid, &block_io); if (r != EFI_SUCCESS) { - efi_st_todo( + efi_st_error( "Failed to uninstall block I/O protocol\n"); - return EFI_ST_SUCCESS; + return EFI_ST_FAILURE; } }