Reviewed-by: Ray Ni <[email protected]> Thanks, Ray > -----Original Message----- > From: Liu, Zhiguang <[email protected]> > Sent: Wednesday, February 28, 2024 10:28 AM > To: [email protected] > Cc: Liu, Zhiguang <[email protected]>; Liming Gao > <[email protected]>; Wu, Jiaxin <[email protected]>; Ni, Ray > <[email protected]>; Laszlo Ersek <[email protected]> > Subject: [PATCH v2 1/4] 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 <[email protected]> > Cc: Jiaxin Wu <[email protected]> > Reviewed-by: Ray Ni <[email protected]> > Reviewed-by: Laszlo Ersek <[email protected]> > Signed-off-by: Zhiguang Liu <[email protected]> > --- > 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..3489c130fd 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 unregister 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 (#116164): https://edk2.groups.io/g/devel/message/116164 Mute This Topic: https://groups.io/mt/104616992/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
