Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Sep 2003 16:20:02 -0700 (PDT)
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 38685 for review
Message-ID:  <200309262320.h8QNK2LV060835@repoman.freebsd.org>

index | next in thread | raw e-mail

http://perforce.freebsd.org/chv.cgi?CH=38685

Change 38685 by sam@sam_ebb on 2003/09/26 16:19:47

	fix locking for bundled SA's and for when key exchange is required

Affected files ...

.. //depot/projects/netperf/sys/netipsec/ipsec_output.c#6 edit

Differences ...

==== //depot/projects/netperf/sys/netipsec/ipsec_output.c#6 (text+ko) ====

@@ -204,6 +204,7 @@
 	struct secasvar *sav;
 
 	IPSEC_SPLASSERT_SOFTNET(__func__);
+	IPSECREQUEST_LOCK_ASSERT(isr);
 
 	IPSEC_ASSERT(af == AF_INET || af == AF_INET6,
 		("invalid address family %u", af));
@@ -287,12 +288,14 @@
 		IPSEC_ASSERT(ipsec_get_reqlevel(isr) == IPSEC_LEVEL_USE,
 			("no SA found, but required; level %u",
 			ipsec_get_reqlevel(isr)));
+		IPSECREQUEST_UNLOCK(isr);
 		isr = isr->next;
 		if (isr == NULL) {
 			/*XXXstatistic??*/
 			*error = EINVAL;		/*XXX*/
 			return isr;
 		}
+		IPSECREQUEST_LOCK(isr);
 		goto again;
 	}
 
@@ -324,6 +327,7 @@
 	return isr;
 bad:
 	IPSEC_ASSERT(*error != 0, ("error return w/ no error code"));
+	IPSECREQUEST_UNLOCK(isr);
 	return NULL;
 #undef IPSEC_OSTAT
 }
@@ -469,7 +473,8 @@
 	IPSECREQUEST_UNLOCK(isr);
 	return error;
 bad:
-	IPSECREQUEST_UNLOCK(isr);
+	if (isr)
+		IPSECREQUEST_UNLOCK(isr);
 	if (m)
 		m_freem(m);
 	return error;


help

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