PERFORCE change 38685 for review

Sam Leffler sam at FreeBSD.org
Fri Sep 26 16:20:05 PDT 2003


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

Change 38685 by sam at 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;


More information about the p4-projects mailing list