From: Star Zeng Date: Mon, 30 Jul 2018 05:42:41 +0000 (+0800) Subject: SignedCapsulePkg SystemFirmwareReportDxe: Try LocateProtocol X-Git-Tag: edk2-stable201903~1311 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=fc0494a6540e9b3cca55f39c7e0d850e2bfd91bb SignedCapsulePkg SystemFirmwareReportDxe: Try LocateProtocol Try LocateProtocol after HandleProtocol fails to be compatible with old SystemFirmwareUpdateDxe. Cc: Michael D Kinney Cc: Jiewen Yao Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Star Zeng Reviewed-by: Jiewen Yao --- diff --git a/SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.c b/SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.c index fb7b63be9d..8802404c9a 100644 --- a/SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.c +++ b/SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.c @@ -202,17 +202,24 @@ FmpSetImage ( (VOID **)&SystemFmp ); if (EFI_ERROR(Status)) { - DEBUG((DEBUG_INFO, "(Agent)SetImage - SystemFmpProtocol - %r\n", Status)); - SystemFmpPrivate->LastAttempt.LastAttemptStatus = LAST_ATTEMPT_STATUS_ERROR_INVALID_FORMAT; - VarStatus = gRT->SetVariable( - SYSTEM_FMP_LAST_ATTEMPT_VARIABLE_NAME, - &gSystemFmpLastAttemptVariableGuid, - EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS, - sizeof(SystemFmpPrivate->LastAttempt), - &SystemFmpPrivate->LastAttempt - ); - DEBUG((DEBUG_INFO, "(Agent)SetLastAttemp - %r\n", VarStatus)); - return Status; + Status = gBS->LocateProtocol ( + &gSystemFmpProtocolGuid, + NULL, + (VOID **)&SystemFmp + ); + if (EFI_ERROR(Status)) { + DEBUG((DEBUG_INFO, "(Agent)SetImage - SystemFmpProtocol - %r\n", Status)); + SystemFmpPrivate->LastAttempt.LastAttemptStatus = LAST_ATTEMPT_STATUS_ERROR_INVALID_FORMAT; + VarStatus = gRT->SetVariable( + SYSTEM_FMP_LAST_ATTEMPT_VARIABLE_NAME, + &gSystemFmpLastAttemptVariableGuid, + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS, + sizeof(SystemFmpPrivate->LastAttempt), + &SystemFmpPrivate->LastAttempt + ); + DEBUG((DEBUG_INFO, "(Agent)SetLastAttemp - %r\n", VarStatus)); + return Status; + } } return SystemFmp->SetImage(SystemFmp, ImageIndex, Image, ImageSize, VendorCode, Progress, AbortReason);