From fc0494a6540e9b3cca55f39c7e0d850e2bfd91bb Mon Sep 17 00:00:00 2001 From: Star Zeng Date: Mon, 30 Jul 2018 13:42:41 +0800 Subject: [PATCH] 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 --- .../SystemFirmwareReportDxe.c | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) 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); -- 2.39.2