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;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to