mirror of https://github.com/acidanthera/audk.git
Revert 17b2872200
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:
parent
de95e919be
commit
b594fba4ec
|
@ -8,8 +8,7 @@
|
||||||
|
|
||||||
#include "PiSmmCore.h"
|
#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 mRootSmiEntry = {
|
||||||
SMI_ENTRY_SIGNATURE,
|
SMI_ENTRY_SIGNATURE,
|
||||||
|
@ -143,18 +142,13 @@ SmiManage (
|
||||||
// Link points to may be freed if unregister SMI handler.
|
// Link points to may be freed if unregister SMI handler.
|
||||||
//
|
//
|
||||||
Link = Link->ForwardLink;
|
Link = Link->ForwardLink;
|
||||||
//
|
|
||||||
// Assign gCurrentSmiHandle before calling the SMI handler and
|
Status = SmiHandler->Handler (
|
||||||
// set to NULL when it returns.
|
(EFI_HANDLE)SmiHandler,
|
||||||
//
|
Context,
|
||||||
mCurrentSmiHandler = SmiHandler;
|
CommBuffer,
|
||||||
Status = SmiHandler->Handler (
|
CommBufferSize
|
||||||
(EFI_HANDLE)SmiHandler,
|
);
|
||||||
Context,
|
|
||||||
CommBuffer,
|
|
||||||
CommBufferSize
|
|
||||||
);
|
|
||||||
mCurrentSmiHandler = NULL;
|
|
||||||
|
|
||||||
switch (Status) {
|
switch (Status) {
|
||||||
case EFI_INTERRUPT_PENDING:
|
case EFI_INTERRUPT_PENDING:
|
||||||
|
@ -334,13 +328,6 @@ SmiHandlerUnRegister (
|
||||||
return EFI_INVALID_PARAMETER;
|
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;
|
SmiEntry = SmiHandler->SmiEntry;
|
||||||
|
|
||||||
RemoveEntryList (&SmiHandler->Link);
|
RemoveEntryList (&SmiHandler->Link);
|
||||||
|
|
Loading…
Reference in New Issue