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(-) 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 (#116074): https://edk2.groups.io/g/devel/message/116074 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] -=-=-=-=-=-=-=-=-=-=-=-