svn commit: r215241 - head/sys/netinet
Michael Tuexen
tuexen at FreeBSD.org
Sat Nov 13 12:52:44 UTC 2010
Author: tuexen
Date: Sat Nov 13 12:52:44 2010
New Revision: 215241
URL: http://svn.freebsd.org/changeset/base/215241
Log:
Fix a locking issue reported by brucec@ affecting
1-to-1 style sockets which have not yet been
accepted.
MFC after: 3 days.
Modified:
head/sys/netinet/sctp_pcb.c
Modified: head/sys/netinet/sctp_pcb.c
==============================================================================
--- head/sys/netinet/sctp_pcb.c Sat Nov 13 11:54:04 2010 (r215240)
+++ head/sys/netinet/sctp_pcb.c Sat Nov 13 12:52:44 2010 (r215241)
@@ -3464,6 +3464,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp,
cnt = 0;
for ((asoc = LIST_FIRST(&inp->sctp_asoc_list)); asoc != NULL;
asoc = nasoc) {
+ SCTP_TCB_LOCK(asoc);
nasoc = LIST_NEXT(asoc, sctp_tcblist);
if (asoc->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) {
if (asoc->asoc.state & SCTP_STATE_IN_ACCEPT_QUEUE) {
@@ -3471,10 +3472,10 @@ sctp_inpcb_free(struct sctp_inpcb *inp,
sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, asoc, NULL);
}
cnt++;
+ SCTP_TCB_UNLOCK(asoc);
continue;
}
/* Free associations that are NOT killing us */
- SCTP_TCB_LOCK(asoc);
if ((SCTP_GET_STATE(&asoc->asoc) != SCTP_STATE_COOKIE_WAIT) &&
((asoc->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0)) {
struct mbuf *op_err;
More information about the svn-src-all
mailing list