Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Nov 2016 10:28:26 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r308974 - projects/ipsec/sys/netipsec
Message-ID:  <201611221028.uAMASQub079855@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ae
Date: Tue Nov 22 10:28:25 2016
New Revision: 308974
URL: https://svnweb.freebsd.org/changeset/base/308974

Log:
  Update key_freesp() to reflect changes in struct secpolicy and
  ipsecrequest.

Modified:
  projects/ipsec/sys/netipsec/key.c

Modified: projects/ipsec/sys/netipsec/key.c
==============================================================================
--- projects/ipsec/sys/netipsec/key.c	Tue Nov 22 10:24:59 2016	(r308973)
+++ projects/ipsec/sys/netipsec/key.c	Tue Nov 22 10:28:25 2016	(r308974)
@@ -972,30 +972,23 @@ key_allocsa_tunnel(union sockaddr_union 
 
 /*
  * Must be called after calling key_allocsp().
- * For both the packet without socket and key_freeso().
  */
 void
-_key_freesp(struct secpolicy **spp, const char* where, int tag)
+key_freesp(struct secpolicy **spp)
 {
-	struct ipsecrequest *isr, *nextisr;
 	struct secpolicy *sp = *spp;
 
 	IPSEC_ASSERT(sp != NULL, ("null sp"));
-	KEYDEBUG(KEYDEBUG_IPSEC_STAMP,
-		printf("DP %s SP:%p (ID=%u) from %s:%u; refcnt now %u\n",
-			__func__, sp, sp->id, where, tag, sp->refcnt));
-
 	if (SP_DELREF(sp) == 0)
 		return;
+
+	KEYDBG(IPSEC_STAMP,
+	    printf("%s: last reference to SP(%p)\n", __func__, sp));
+	KEYDBG(IPSEC_DATA, kdebug_secpolicy(sp));
+
 	*spp = NULL;
-	for (isr = sp->req; isr != NULL; isr = nextisr) {
-		if (isr->sav != NULL) {
-			KEY_FREESAV(&isr->sav);
-			isr->sav = NULL;
-		}
-		nextisr = isr->next;
-		ipsec_delisr(isr);
-	}
+	while (sp->tcount > 0)
+		ipsec_delisr(sp->req[--sp->tcount]);
 	free(sp, M_IPSEC_SP);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611221028.uAMASQub079855>