NULL\r
);\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ goto Exit;\r
}\r
\r
//\r
NULL\r
);\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ goto Exit;\r
}\r
\r
//\r
gUpdateData.BufferSize = UPDATE_DATA_SIZE;\r
gUpdateData.Data = AllocateZeroPool (UPDATE_DATA_SIZE);\r
if (gUpdateData.Data == NULL) {\r
- FreePool (BmmCallbackInfo->LoadContext);\r
- FreePool (BmmCallbackInfo);\r
- return EFI_OUT_OF_RESOURCES;\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto Exit;\r
}\r
\r
InitializeStringDepository ();\r
IfrLibUpdateForm (\r
BmmCallbackInfo->BmmHiiHandle,\r
&mBootMaintGuid,\r
- FORM_MAIN_ID,\r
+ FORM_BOOT_SETUP_ID,\r
FORM_BOOT_LEGACY_DEVICE_ID,\r
FALSE,\r
&gUpdateData\r
\r
FreeAllMenu ();\r
\r
- FreePool (BmmCallbackInfo->LoadContext);\r
- FreePool (BmmCallbackInfo);\r
FreePool (gUpdateData.Data);\r
gUpdateData.Data = NULL;\r
\r
+Exit:\r
+ if (BmmCallbackInfo->FeDriverHandle != NULL) {\r
+ gBS->UninstallMultipleProtocolInterfaces (\r
+ BmmCallbackInfo->FeDriverHandle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ &mFeHiiVendorDevicePath,\r
+ &gEfiHiiConfigAccessProtocolGuid,\r
+ &BmmCallbackInfo->FeConfigAccess,\r
+ NULL\r
+ );\r
+ }\r
+\r
+ if (BmmCallbackInfo->BmmDriverHandle != NULL) {\r
+ gBS->UninstallMultipleProtocolInterfaces (\r
+ BmmCallbackInfo->BmmDriverHandle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ &mBmmHiiVendorDevicePath,\r
+ &gEfiHiiConfigAccessProtocolGuid,\r
+ &BmmCallbackInfo->BmmConfigAccess,\r
+ NULL\r
+ );\r
+ }\r
+\r
+ FreePool (BmmCallbackInfo->LoadContext);\r
+ FreePool (BmmCallbackInfo);\r
+\r
return Status;\r
}\r
\r