From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1 with cipher CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 324A51A1F32 for ; Thu, 22 Sep 2016 01:47:34 -0700 (PDT) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP; 22 Sep 2016 01:47:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.30,378,1470726000"; d="scan'208";a="1044080134" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga001.fm.intel.com with ESMTP; 22 Sep 2016 01:47:33 -0700 Received: from fmsmsx155.amr.corp.intel.com (10.18.116.71) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 22 Sep 2016 01:47:33 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX155.amr.corp.intel.com (10.18.116.71) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 22 Sep 2016 01:47:33 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.234]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.101]) with mapi id 14.03.0248.002; Thu, 22 Sep 2016 16:47:31 +0800 From: "Ye, Ting" To: Gary Li , "edk2-devel@lists.01.org" CC: "Fu, Siyuan" , "Wu, Jiaxin" Thread-Topic: [edk2] [PATCH] NetworkPkg: Fix RSOD issue in Ip6Dxe Thread-Index: AQHSFJx0EPJbey6y+kmU6+M/minG6KCFLirQ Date: Thu, 22 Sep 2016 08:47:30 +0000 Message-ID: References: <1474526298-10600-1-git-send-email-garyli@hpe.com> In-Reply-To: <1474526298-10600-1-git-send-email-garyli@hpe.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] NetworkPkg: Fix RSOD issue in Ip6Dxe X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Sep 2016 08:47:34 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Gary, Do you mind sharing more details about how to reproduce this issue? We are = not clear why this would happen.=20 It seems the code should continue executing the previous Ip6NdFasterTimerTi= cking function rather than dispatching the new timer event. Thanks, Ye Ting -----Original Message----- From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Gary= Li Sent: Thursday, September 22, 2016 2:38 PM To: edk2-devel@lists.01.org Cc: Ye, Ting ; Fu, Siyuan ; Wu, Jia= xin Subject: [edk2] [PATCH] NetworkPkg: Fix RSOD issue in Ip6Dxe Avoid the Ip6NdFasterTimerTicking is executed again before the previous Ip6= NdFasterTimerTicking is done. When user presses hotkey between the below line, it makes the Ip6NdFasterTi= merTicking is dispatched again before the previous Ip6NdFasterTimerTicking = is done. Therefore, the DelayNode node will be removed twice. DelayNode =3D NET_LIST_USER_STRUCT (Entry2, IP6_DELAY_JOIN_LIST, Link); ... RemoveEntryList (&DelayNode->Link); Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Gary Li --- NetworkPkg/Ip6Dxe/Ip6Nd.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/NetworkPkg/Ip6Dxe/Ip6Nd.c b/NetworkPkg/Ip6Dxe/Ip6Nd.c index a3= f49bb..d400d7c 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Nd.c +++ b/NetworkPkg/Ip6Dxe/Ip6Nd.c @@ -2,6 +2,7 @@ Implementation of Neighbor Discovery support routines. =20 Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP
=20 This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License @@ -16,6 +17,7 @@ #include "Ip6Impl.h" =20 EFI_MAC_ADDRESS mZeroMacAddress; +BOOLEAN mIsInIp6NdFasterTimerTicking =3D FALSE; =20 /** Update the ReachableTime in IP6 service binding instance data, in millis= econds. @@ -2774,6 +2776,12 @@ Ip6NdFasterTimerTicking ( IP6_SERVICE *IpSb; BOOLEAN Flag; =20 + if (!mIsInIp6NdFasterTimerTicking) { + mIsInIp6NdFasterTimerTicking =3D TRUE; } else { + return; + } + IpSb =3D (IP6_SERVICE *) Context; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); =20 @@ -2848,7 +2856,7 @@ Ip6NdFasterTimerTicking ( NULL ); if (EFI_ERROR (Status)) { - return; + goto Exit; } =20 DupAddrDetect->Transmit++; @@ -2896,7 +2904,7 @@ Ip6NdFasterTimerTicking ( Ip6CreateSNMulticastAddr (&NeighborCache->Neighbor, &Destination= ); Status =3D Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbo= r, &Source); if (EFI_ERROR (Status)) { - return; + goto Exit; } =20 Status =3D Ip6SendNeighborSolicit ( @@ -2907,7 +2915,7 @@ Ip6NdF= asterTimerTicking ( &IpSb->SnpMode.CurrentAddress ); if (EFI_ERROR (Status)) { - return; + goto Exit; } } =20 @@ -2934,7 +2942,7 @@ Ip6NdFasterTimerTicking ( NULL ); if (EFI_ERROR (Status)) { - return; + goto Exit; } } =20 @@ -2965,7 +2973,7 @@ Ip6NdFasterTimerTicking ( NULL ); if (EFI_ERROR (Status)) { - return; + goto Exit; } } else { NeighborCache->State =3D EfiNeighborStale; @@ -2986,7 +2994,7 @@= Ip6NdFasterTimerTicking ( // Status =3D Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor,= &Source); if (EFI_ERROR (Status)) { - return; + goto Exit; } =20 Status =3D Ip6SendNeighborSolicit ( @@ -2997,7 +3005,7 @@ Ip6NdFas= terTimerTicking ( &IpSb->SnpMode.CurrentAddress ); if (EFI_ERROR (Status)) { - return; + goto Exit; } =20 NeighborCache->Transmit--; @@ -3023,7 +3031,7 @@ Ip6NdFasterTimerTicking ( // Status =3D Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbo= r, &Source); if (EFI_ERROR (Status)) { - return; + goto Exit; } =20 Status =3D Ip6SendNeighborSolicit ( @@ -3034,7 +3042,7 @@ Ip6NdF= asterTimerTicking ( &IpSb->SnpMode.CurrentAddress ); if (EFI_ERROR (Status)) { - return; + goto Exit; } } =20 @@ -3061,7 +3069,7 @@ Ip6NdFasterTimerTicking ( NULL ); if (EFI_ERROR (Status)) { - return; + goto Exit; } } =20 @@ -3071,6 +3079,9 @@ Ip6NdFasterTimerTicking ( break; } } + +Exit: + mIsInIp6NdFasterTimerTicking =3D FALSE; } =20 /** -- 2.7.2.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel