summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhiguang Liu <zhiguang.liu@intel.com>2024-03-08 13:46:21 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2024-04-16 04:41:27 +0000
commitb594fba4ec5e2a9730979060a24d29d9daaa7bbc (patch)
tree33c956ce1bef80b0fe678ddc27c330ee41321645
parentde95e919bea2aba6dc56536a7d2849038e801d40 (diff)
downloadedk2-b594fba4ec5e2a9730979060a24d29d9daaa7bbc.tar.gz
edk2-b594fba4ec5e2a9730979060a24d29d9daaa7bbc.tar.bz2
edk2-b594fba4ec5e2a9730979060a24d29d9daaa7bbc.zip
Revert 17b28722008eab745ce186b72cd325944cbe6bf0
This reverts commit "MdeModulePkg/SMM: Disallow unregister SMI handler in other SMI 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>
-rw-r--r--MdeModulePkg/Core/PiSmmCore/Smi.c29
1 files changed, 8 insertions, 21 deletions
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);