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>
This commit is contained in:
Zhiguang Liu 2024-03-08 13:46:21 +08:00 committed by mergify[bot]
parent de95e919be
commit b594fba4ec
1 changed files with 8 additions and 21 deletions

View File

@ -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);