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