Felix, I remember you mentioned to me about the usage of SMI handler unregistering itself.
Reviewed-by: Ray Ni <ray...@intel.com> Thanks, Ray > -----Original Message----- > From: Liu, Zhiguang <zhiguang....@intel.com> > Sent: Wednesday, January 24, 2024 12:03 PM > To: devel@edk2.groups.io > Cc: Liu, Zhiguang <zhiguang....@intel.com>; Liming Gao > <gaolim...@byosoft.com.cn>; Wu, Jiaxin <jiaxin...@intel.com>; Ni, Ray > <ray...@intel.com> > Subject: [PATCH] MdeModulePkg/SMM: Support to unregister SMI handler > inside SMI handler > > To support unregister SMI handler inside SMI handler itself, > get next node before SMI handler is executed, since LIST_ENTRY that > Link points to may be freed if unregister SMI handler in SMI handler > itself. > > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Jiaxin Wu <jiaxin...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Signed-off-by: Zhiguang Liu <zhiguang....@intel.com> > --- > MdeModulePkg/Core/PiSmmCore/Smi.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/MdeModulePkg/Core/PiSmmCore/Smi.c > b/MdeModulePkg/Core/PiSmmCore/Smi.c > index 2985f989c3..a75e52b1ae 100644 > --- a/MdeModulePkg/Core/PiSmmCore/Smi.c > +++ b/MdeModulePkg/Core/PiSmmCore/Smi.c > @@ -134,8 +134,14 @@ SmiManage ( > > Head = &SmiEntry->SmiHandlers; > > - for (Link = Head->ForwardLink; Link != Head; Link = Link->ForwardLink) { > + for (Link = Head->ForwardLink; Link != Head;) { > SmiHandler = CR (Link, SMI_HANDLER, Link, > SMI_HANDLER_SIGNATURE); > + // > + // To support unregiser SMI handler inside SMI handler itself, > + // get next node before handler is executed, since LIST_ENTRY that > + // Link points to may be freed if unregister SMI handler. > + // > + Link = Link->ForwardLink; > > Status = SmiHandler->Handler ( > (EFI_HANDLE)SmiHandler, > -- > 2.31.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114269): https://edk2.groups.io/g/devel/message/114269 Mute This Topic: https://groups.io/mt/103925794/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-