aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHeinrich Schuchardt <xypron.glpk@gmx.de>2019-05-30 20:12:19 +0200
committerHeinrich Schuchardt <xypron.glpk@gmx.de>2019-05-31 23:27:12 +0200
commita248bc805536337317a5cb9777f420c38724dab4 (patch)
treef6c8943de46136de008b22433d0b98ca26f1c62a /lib
parentdae7ce451c5eaaae98014a4062950cd646f78c2d (diff)
downloadu-boot-a248bc805536337317a5cb9777f420c38724dab4.zip
u-boot-a248bc805536337317a5cb9777f420c38724dab4.tar.gz
u-boot-a248bc805536337317a5cb9777f420c38724dab4.tar.bz2
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>
Diffstat (limited to 'lib')
-rw-r--r--lib/efi_loader/efi_boottime.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
index f712684..f5b5828 100644
--- a/lib/efi_loader/efi_boottime.c
+++ b/lib/efi_loader/efi_boottime.c
@@ -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 ==