]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC:
authorrrs <rrs@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 11 Jun 2010 03:13:19 +0000 (03:13 +0000)
committerrrs <rrs@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 11 Jun 2010 03:13:19 +0000 (03:13 +0000)
commit21f7d6c524a91477113e6af61d068cbaa64984d8
treec856c7175ceb872f6a32d8abca83a3084a368ba9
parent480568ee44531620c1f7a6cd001567877f24f45d
MFC:
Fix a number of bugs and race conditions.
r208160: Bring back of the iterator thread. It now properly handles VNETS
         having only one thread. The old timer based code was full of
         LOR's and other issues.

r208852: Cleanup bug. Basically when an un-accepted socket was hanging on a
        closed listener, we would leak the inp never cleaning it up

r208853: Enhance the use under invarients of the audit for locks function
         and fix a bug where a close collision with a cookie being processed
         would cause a crash.

r208854: Use the proper increment macros when working with the
         sent_queue_retran_cnt

r208855: Align comments properly, Fix a bug where we were NOT looking at the
         resend markings for control chunks and also not decrementing the
         retran count which caused extra calls to retransmission. Alos add
         a valid no locks call to the output routine.

r208856: Spacing issues in auth/bsd addr.

r208857: Get rid of a windows ifdef that somehow leaked in

r208863: Missing error leg returns in some failure cases

r208864: LOR fix between the iterator and sctp_inpcb_close

r208874: Don't call the sctp_inpcb_free from abort an association since you
         don't know what locks you hold and a timer will take care of the
         situation when the gone flag is set

r208875: sctp_inpcb_free bug - a socket under the right situation could get
         stuck (from the accept queue) and never start the proper cleanup
         timer)

r208876: Further enhance invariant lock validation, Fix a bug where a closed
         socket and a INIT-ACK could collide and cause a crash

r208878: Clear up another bug in sctp_inpcb_free where we would end up due
         to a race in freeing hit a destroy of a contended lock.

r208879: Optimize the cleanup and make some additional fixes in the sysctl
         code so that it won't reference a GONE INP and crash us

r208883 & r208891: Fix so we don't open a hole between a sock lock and a call
         to socantrcvmore.. we could before hit a race that would kill the
         socket underneath us leading to a crash

r208897: CUM-ACK calculation was messed up. So basically large message got
         broken from the original NR_sack integration.

r208902: Make sure that we don't move a bit to the NR array that is behind
         the cum-ack

r208952: Use both bit maps to calculte the cum-ack.

r208953: Fix bug having to do with freeing an sctp_inpcb_free().
    1) make sure not to remove the flag until you get the lock again.
    2) make sure all log_closing calls hold the lock.
    3) Release all the locks when everthing is done and call callout_drain
       not callout_stop..

r208970: Fix some places on user allocation of a new sctp_inpcb where we run
         out of resource that we make sure to NULL the so_pcb pointer.
Approved by: re - (bz@freebsd.org)

git-svn-id: svn://svn.freebsd.org/base/stable/8@209028 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
15 files changed:
sys/netinet/sctp_auth.c
sys/netinet/sctp_bsd_addr.c
sys/netinet/sctp_bsd_addr.h
sys/netinet/sctp_constants.h
sys/netinet/sctp_indata.c
sys/netinet/sctp_input.c
sys/netinet/sctp_lock_bsd.h
sys/netinet/sctp_output.c
sys/netinet/sctp_pcb.c
sys/netinet/sctp_pcb.h
sys/netinet/sctp_structs.h
sys/netinet/sctp_sysctl.c
sys/netinet/sctp_timer.c
sys/netinet/sctp_usrreq.c
sys/netinet/sctputil.c