mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 01:44:34 +00:00
efi_driver: fix efi_uc_stop()
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 <xypron.glpk@gmx.de>
This commit is contained in:
parent
1064f2ef03
commit
d743104246
2 changed files with 6 additions and 5 deletions
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue