From 3be909099cf66f26a5ace282e4cbbdc6bf7cb32b Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Wed, 26 Feb 2020 13:06:31 +0100 Subject: [PATCH] ArmPkg/MmCommunicationDxe: fix logic bug in DXE driver entrypoint Commit 2fe25a74d6fee3c2 ("ArmPkg/MmCommunicationDxe: relay architected PI events to MM context") update the ARM specific standalone MM client driver to register for certain events in the entrypoint code, but did so in a way that makes the entrypoint always return with an error. Instead, return EFI_SUCCESS if registering for those events succeeds, and back out the registrations that did succeed if one fails, and return an error. Fixes: 2fe25a74d6fee3c2 ("ArmPkg/MmCommunicationDxe: relay architected PI events to MM context") Signed-off-by: Ard Biesheuvel Reviewed-by: Leif Lindholm --- ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c b/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c index 5f52afa0fe..a9e06be1ad 100644 --- a/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c +++ b/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c @@ -390,8 +390,16 @@ MmCommunicationInitialize ( MmGuidedEventNotify, mGuidedEventGuid[Index], mGuidedEventGuid[Index], &mGuidedEvent[Index]); ASSERT_EFI_ERROR (Status); + if (EFI_ERROR (Status)) { + while (Index-- > 0) { + gBS->CloseEvent (mGuidedEvent[Index]); + } + goto UninstallProtocol; + } } + return EFI_SUCCESS; +UninstallProtocol: gBS->UninstallProtocolInterface ( mMmCommunicateHandle, &gEfiMmCommunicationProtocolGuid, -- 2.39.2