MdeModulePkg: Make retval in UninstallMultipleProtocol follow Spec
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1869 The UEFI spec requires that if any error occurs in UninstallMultipleProtocolInterfaces(), EFI_INVALID_PARAMETER is returned and not the return code of UninstallProtocolInterface(). Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Dandan Bi <dandan.bi@intel.com>
This commit is contained in:
committed by
mergify[bot]
parent
c230c002ac
commit
0997352ddb
@ -802,20 +802,27 @@ Done:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Uninstalls a list of protocol interface in the boot services environment.
|
Uninstalls a list of protocol interface in the boot services environment.
|
||||||
This function calls UnisatllProtocolInterface() in a loop. This is
|
This function calls UninstallProtocolInterface() in a loop. This is
|
||||||
basically a lib function to save space.
|
basically a lib function to save space.
|
||||||
|
|
||||||
@param Handle The handle to uninstall the protocol
|
If any errors are generated while the protocol interfaces are being
|
||||||
|
uninstalled, then the protocol interfaces uninstalled prior to the error will
|
||||||
|
be reinstalled and EFI_INVALID_PARAMETER will be returned.
|
||||||
|
|
||||||
|
@param Handle The handle to uninstall the protocol interfaces
|
||||||
|
from.
|
||||||
@param ... EFI_GUID followed by protocol instance. A NULL
|
@param ... EFI_GUID followed by protocol instance. A NULL
|
||||||
terminates the list. The pairs are the
|
terminates the list. The pairs are the
|
||||||
arguments to UninstallProtocolInterface(). All
|
arguments to UninstallProtocolInterface(). All
|
||||||
the protocols are added to Handle.
|
the protocols are added to Handle.
|
||||||
|
|
||||||
@return Status code
|
@retval EFI_SUCCESS if all protocol interfaces where uninstalled.
|
||||||
|
@retval EFI_INVALID_PARAMETER if any protocol interface could not be
|
||||||
|
uninstalled and an attempt was made to
|
||||||
|
reinstall previously uninstalled protocol
|
||||||
|
interfaces.
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
@ -864,6 +871,7 @@ CoreUninstallMultipleProtocolInterfaces (
|
|||||||
CoreInstallProtocolInterface (&Handle, Protocol, EFI_NATIVE_INTERFACE, Interface);
|
CoreInstallProtocolInterface (&Handle, Protocol, EFI_NATIVE_INTERFACE, Interface);
|
||||||
}
|
}
|
||||||
VA_END (Args);
|
VA_END (Args);
|
||||||
|
Status = EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
Reference in New Issue
Block a user