efi_loader: correct UninstallProtocolInterface()
When uninstalling a protocol the following steps are needed: * request all drivers to disconnect * close protocol for all non-drivers * check if any open instance of the protocol exists on the handle and return EFI_ACCESS_DENIED in this case * remove the protocol interface By tort we tested for remaining open protocol instances already after requesting drivers to disconnect. With this correction the UEFI SCT II tests for UninstallProtocolInterface() and ReinstallProtocolInterface are passed. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
dae7ce451c
commit
a248bc8055
@ -1260,10 +1260,6 @@ static efi_status_t efi_uninstall_protocol
|
||||
goto out;
|
||||
/* Disconnect controllers */
|
||||
efi_disconnect_all_drivers(efiobj, protocol, NULL);
|
||||
if (!list_empty(&handler->open_infos)) {
|
||||
r = EFI_ACCESS_DENIED;
|
||||
goto out;
|
||||
}
|
||||
/* Close protocol */
|
||||
list_for_each_entry_safe(item, pos, &handler->open_infos, link) {
|
||||
if (item->info.attributes ==
|
||||
|
Loading…
Reference in New Issue
Block a user