From 31cd5ee8c0946b62520795bdbe81f886a8b81559 Mon Sep 17 00:00:00 2001 From: Zhiguang Liu Date: Fri, 8 Mar 2024 13:46:14 +0800 Subject: Revert 2ec8f0c6407f062441b205b900038933865c7b3c This reverts commit "StandaloneMmPkg: Disallow unregister MMI handler in other MMI handler" for better design later. Cc: Liming Gao Cc: Jiaxin Wu Cc: Ray Ni Cc: Laszlo Ersek Reviewed-by: Ray Ni Cc: Laszlo Ersek Cc: Ard Biesheuvel Cc: Sami Mujawar Signed-off-by: Zhiguang Liu --- StandaloneMmPkg/Core/Mmi.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/StandaloneMmPkg/Core/Mmi.c b/StandaloneMmPkg/Core/Mmi.c index 9e52072bf7..c1a1d76e85 100644 --- a/StandaloneMmPkg/Core/Mmi.c +++ b/StandaloneMmPkg/Core/Mmi.c @@ -36,9 +36,8 @@ typedef struct { MMI_ENTRY *MmiEntry; } MMI_HANDLER; -LIST_ENTRY mRootMmiHandlerList = INITIALIZE_LIST_HEAD_VARIABLE (mRootMmiHandlerList); -LIST_ENTRY mMmiEntryList = INITIALIZE_LIST_HEAD_VARIABLE (mMmiEntryList); -MMI_HANDLER *mCurrentMmiHandler = NULL; +LIST_ENTRY mRootMmiHandlerList = INITIALIZE_LIST_HEAD_VARIABLE (mRootMmiHandlerList); +LIST_ENTRY mMmiEntryList = INITIALIZE_LIST_HEAD_VARIABLE (mMmiEntryList); /** Finds the MMI entry for the requested handler type. @@ -162,19 +161,13 @@ MmiManage ( // get next node before handler is executed, since LIST_ENTRY that // Link points to may be freed if unregister MMI handler. // - Link = Link->ForwardLink; - // - // Assign gCurrentMmiHandle before calling the MMI handler and - // set to NULL when it returns. - // - mCurrentMmiHandler = MmiHandler; - Status = MmiHandler->Handler ( - (EFI_HANDLE)MmiHandler, - Context, - CommBuffer, - CommBufferSize - ); - mCurrentMmiHandler = NULL; + Link = Link->ForwardLink; + Status = MmiHandler->Handler ( + (EFI_HANDLE)MmiHandler, + Context, + CommBuffer, + CommBufferSize + ); switch (Status) { case EFI_INTERRUPT_PENDING: @@ -321,13 +314,6 @@ MmiHandlerUnRegister ( return EFI_INVALID_PARAMETER; } - // - // Do not allow to unregister MMI Handler inside other MMI Handler - // - if ((mCurrentMmiHandler != NULL) && (mCurrentMmiHandler != MmiHandler)) { - return EFI_INVALID_PARAMETER; - } - MmiEntry = MmiHandler->MmiEntry; RemoveEntryList (&MmiHandler->Link); -- cgit v1.2.3