Revert 2ec8f0c6407f062441b205b900038933865c7b3c

This reverts commit "StandaloneMmPkg: Disallow unregister MMI
handler in other MMI handler" for better design later.

Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
This commit is contained in:
Zhiguang Liu 2024-03-08 13:46:14 +08:00 committed by mergify[bot]
parent 5ba3602e45
commit 31cd5ee8c0

View File

@ -38,7 +38,6 @@ typedef struct {
LIST_ENTRY mRootMmiHandlerList = INITIALIZE_LIST_HEAD_VARIABLE (mRootMmiHandlerList); LIST_ENTRY mRootMmiHandlerList = INITIALIZE_LIST_HEAD_VARIABLE (mRootMmiHandlerList);
LIST_ENTRY mMmiEntryList = INITIALIZE_LIST_HEAD_VARIABLE (mMmiEntryList); LIST_ENTRY mMmiEntryList = INITIALIZE_LIST_HEAD_VARIABLE (mMmiEntryList);
MMI_HANDLER *mCurrentMmiHandler = NULL;
/** /**
Finds the MMI entry for the requested handler type. Finds the MMI entry for the requested handler type.
@ -163,18 +162,12 @@ MmiManage (
// Link points to may be freed if unregister MMI handler. // Link points to may be freed if unregister MMI handler.
// //
Link = Link->ForwardLink; Link = Link->ForwardLink;
//
// Assign gCurrentMmiHandle before calling the MMI handler and
// set to NULL when it returns.
//
mCurrentMmiHandler = MmiHandler;
Status = MmiHandler->Handler ( Status = MmiHandler->Handler (
(EFI_HANDLE)MmiHandler, (EFI_HANDLE)MmiHandler,
Context, Context,
CommBuffer, CommBuffer,
CommBufferSize CommBufferSize
); );
mCurrentMmiHandler = NULL;
switch (Status) { switch (Status) {
case EFI_INTERRUPT_PENDING: case EFI_INTERRUPT_PENDING:
@ -321,13 +314,6 @@ MmiHandlerUnRegister (
return EFI_INVALID_PARAMETER; 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; MmiEntry = MmiHandler->MmiEntry;
RemoveEntryList (&MmiHandler->Link); RemoveEntryList (&MmiHandler->Link);