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>
/**\r
Uninstalls a list of protocol interface in the boot services environment.\r
/**\r
Uninstalls a list of protocol interface in the boot services environment.\r
- This function calls UnisatllProtocolInterface() in a loop. This is\r
+ This function calls UninstallProtocolInterface() in a loop. This is\r
basically a lib function to save space.\r
\r
basically a lib function to save space.\r
\r
- @param Handle The handle to uninstall the protocol\r
+ If any errors are generated while the protocol interfaces are being\r
+ uninstalled, then the protocol interfaces uninstalled prior to the error will\r
+ be reinstalled and EFI_INVALID_PARAMETER will be returned.\r
+\r
+ @param Handle The handle to uninstall the protocol interfaces\r
+ from.\r
@param ... EFI_GUID followed by protocol instance. A NULL\r
@param ... EFI_GUID followed by protocol instance. A NULL\r
- terminates the list. The pairs are the\r
+ terminates the list. The pairs are the\r
arguments to UninstallProtocolInterface(). All\r
the protocols are added to Handle.\r
\r
arguments to UninstallProtocolInterface(). All\r
the protocols are added to Handle.\r
\r
- @return Status code\r
-\r
+ @retval EFI_SUCCESS if all protocol interfaces where uninstalled.\r
+ @retval EFI_INVALID_PARAMETER if any protocol interface could not be\r
+ uninstalled and an attempt was made to\r
+ reinstall previously uninstalled protocol\r
+ interfaces.\r
**/\r
EFI_STATUS\r
EFIAPI\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreInstallProtocolInterface (&Handle, Protocol, EFI_NATIVE_INTERFACE, Interface);\r
}\r
VA_END (Args);\r
CoreInstallProtocolInterface (&Handle, Protocol, EFI_NATIVE_INTERFACE, Interface);\r
}\r
VA_END (Args);\r
+ Status = EFI_INVALID_PARAMETER;\r