From 60cbd7fb2ed4683efaf83a21d2d1a9e51556815b Mon Sep 17 00:00:00 2001 From: Jiaxin Wu Date: Fri, 28 Aug 2015 07:00:32 +0000 Subject: NetworkPkg: Fix IpSec run into infinite loop issue in some case v2: * Update the copyright year and conditional judgment for removing. When edit one SPEntry in SPD database, the corresponding SA entry will be updated to the sas list of the new SPD entry. But before that, all of them should be removed from the original sas list. If not, the list will be broken into infinite loop. Cc: Ye Ting Cc: Fu Siyuan Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu Reviewed-by: Ye Ting Reviewed-by: Fu Siyuan git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18352 6f19259b-4bc3-4df7-8a09-765794883524 --- NetworkPkg/IpSecDxe/IpSecConfigImpl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'NetworkPkg/IpSecDxe') diff --git a/NetworkPkg/IpSecDxe/IpSecConfigImpl.c b/NetworkPkg/IpSecDxe/IpSecConfigImpl.c index 6eabfe45de..bd49245190 100644 --- a/NetworkPkg/IpSecDxe/IpSecConfigImpl.c +++ b/NetworkPkg/IpSecDxe/IpSecConfigImpl.c @@ -1,7 +1,7 @@ /** @file The implementation of IPSEC_CONFIG_PROTOCOL. - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -1199,6 +1199,9 @@ SetSpdEntry ( (EFI_IPSEC_CONFIG_SELECTOR *) &SpdData->SaId[Index], (EFI_IPSEC_CONFIG_SELECTOR *) SadEntry->Id )) { + if (SadEntry->Data->SpdEntry != NULL) { + RemoveEntryList (&SadEntry->BySpd); + } InsertTailList (&SpdEntry->Data->Sas, &SadEntry->BySpd); SadEntry->Data->SpdEntry = SpdEntry; DuplicateSpdSelector ( -- cgit v1.2.3