From b594fba4ec5e2a9730979060a24d29d9daaa7bbc Mon Sep 17 00:00:00 2001 From: Zhiguang Liu Date: Fri, 8 Mar 2024 13:46:21 +0800 Subject: Revert 17b28722008eab745ce186b72cd325944cbe6bf0 This reverts commit "MdeModulePkg/SMM: Disallow unregister SMI handler in other SMI 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 --- MdeModulePkg/Core/PiSmmCore/Smi.c | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) (limited to 'MdeModulePkg') diff --git a/MdeModulePkg/Core/PiSmmCore/Smi.c b/MdeModulePkg/Core/PiSmmCore/Smi.c index b3a81ac877..3489c130fd 100644 --- a/MdeModulePkg/Core/PiSmmCore/Smi.c +++ b/MdeModulePkg/Core/PiSmmCore/Smi.c @@ -8,8 +8,7 @@ #include "PiSmmCore.h" -SMI_HANDLER *mCurrentSmiHandler = NULL; -LIST_ENTRY mSmiEntryList = INITIALIZE_LIST_HEAD_VARIABLE (mSmiEntryList); +LIST_ENTRY mSmiEntryList = INITIALIZE_LIST_HEAD_VARIABLE (mSmiEntryList); SMI_ENTRY mRootSmiEntry = { SMI_ENTRY_SIGNATURE, @@ -143,18 +142,13 @@ SmiManage ( // Link points to may be freed if unregister SMI handler. // Link = Link->ForwardLink; - // - // Assign gCurrentSmiHandle before calling the SMI handler and - // set to NULL when it returns. - // - mCurrentSmiHandler = SmiHandler; - Status = SmiHandler->Handler ( - (EFI_HANDLE)SmiHandler, - Context, - CommBuffer, - CommBufferSize - ); - mCurrentSmiHandler = NULL; + + Status = SmiHandler->Handler ( + (EFI_HANDLE)SmiHandler, + Context, + CommBuffer, + CommBufferSize + ); switch (Status) { case EFI_INTERRUPT_PENDING: @@ -334,13 +328,6 @@ SmiHandlerUnRegister ( return EFI_INVALID_PARAMETER; } - // - // Do not allow to unregister SMI Handler inside other SMI Handler - // - if ((mCurrentSmiHandler != NULL) && (mCurrentSmiHandler != SmiHandler)) { - return EFI_INVALID_PARAMETER; - } - SmiEntry = SmiHandler->SmiEntry; RemoveEntryList (&SmiHandler->Link); -- cgit v1.2.3