On Wed, 28 Feb 2024 at 03:28, Zhiguang Liu <zhiguang....@intel.com> wrote: > > To support unregister MMI handler inside MMI handler itself, > get next node before MMI handler is executed, since LIST_ENTRY that > Link points to may be freed if unregister MMI handler in MMI handler > itself. > > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Jiaxin Wu <jiaxin...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Laszlo Ersek <ler...@redhat.com> > Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org> > Cc: Sami Mujawar <sami.muja...@arm.com> > Signed-off-by: Zhiguang Liu <zhiguang....@intel.com> > --- > StandaloneMmPkg/Core/Mmi.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) >
Reviewed-by: Ard Biesheuvel <a...@kernel.org> > diff --git a/StandaloneMmPkg/Core/Mmi.c b/StandaloneMmPkg/Core/Mmi.c > index 0de6fd17fc..c1a1d76e85 100644 > --- a/StandaloneMmPkg/Core/Mmi.c > +++ b/StandaloneMmPkg/Core/Mmi.c > @@ -154,9 +154,14 @@ MmiManage ( > Head = &MmiEntry->MmiHandlers; > } > > - for (Link = Head->ForwardLink; Link != Head; Link = Link->ForwardLink) { > + for (Link = Head->ForwardLink; Link != Head;) { > MmiHandler = CR (Link, MMI_HANDLER, Link, MMI_HANDLER_SIGNATURE); > - > + // > + // To support unregister MMI handler inside MMI handler itself, > + // get next node before handler is executed, since LIST_ENTRY that > + // Link points to may be freed if unregister MMI handler. > + // > + Link = Link->ForwardLink; > Status = MmiHandler->Handler ( > (EFI_HANDLE)MmiHandler, > Context, > -- > 2.31.1.windows.1 > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#116629): https://edk2.groups.io/g/devel/message/116629 Mute This Topic: https://groups.io/mt/104616994/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-