From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 20BA778003C for ; Wed, 24 Jan 2024 04:03:18 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=1G5Fx4VX+Eqf7p3jUsp5nu9p+wTpyL1LC+3LknvVYww=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1706068997; v=1; b=jjMgWcLnHBiMwM70eKvs2JNYVIZrEFks6hVl4DT+blnjyU0DNKudcvyVzLB1qBm4opnoVqAQ P7vB+ol5YRYJDfECp4H+7IEVHiulQZ18oAkEBzZl2sI+Z4uZluwKAIhS4gC25PA9D7xzQZKZdKO WdgTu5xjwway1QpmdqR2BHp4= X-Received: by 127.0.0.2 with SMTP id rTz2YY7687511xVOV0mwSjgm; Tue, 23 Jan 2024 20:03:17 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by mx.groups.io with SMTP id smtpd.web10.15102.1706068996561620962 for ; Tue, 23 Jan 2024 20:03:16 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10962"; a="15085766" X-IronPort-AV: E=Sophos;i="6.05,215,1701158400"; d="scan'208";a="15085766" X-Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Jan 2024 20:03:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.05,215,1701158400"; d="scan'208";a="1903655" X-Received: from shwdesfp01.ccr.corp.intel.com ([10.239.158.151]) by fmviesa004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Jan 2024 20:03:13 -0800 From: "Zhiguang Liu" To: devel@edk2.groups.io Cc: Zhiguang Liu , Liming Gao , Jiaxin Wu , Ray Ni Subject: [edk2-devel] [PATCH] MdeModulePkg/SMM: Support to unregister SMI handler inside SMI handler Date: Wed, 24 Jan 2024 12:03:01 +0800 Message-Id: <20240124040301.2176-1-zhiguang.liu@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,zhiguang.liu@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 0ZjrbZJi8rZRfzDaxAmyIkq0x7686176AA= Content-Transfer-Encoding: 8bit X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=jjMgWcLn; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io 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 Cc: Jiaxin Wu Cc: Ray Ni Signed-off-by: Zhiguang Liu --- 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 (#114251): https://edk2.groups.io/g/devel/message/114251 Mute This Topic: https://groups.io/mt/103925794/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-