diff options
author | rwatson <rwatson@FreeBSD.org> | 2005-06-01 11:49:14 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2005-06-01 11:49:14 +0000 |
commit | fe0bf623ad311f3aee6c729f327285b3baa24e34 (patch) | |
tree | 7b5b438e52cf3e55e55487ac032bb359a795de2b /sys/netinet/tcp_reass.c | |
parent | a5b21ce8f450b6272d186c0b7b089d42650f93e3 (diff) | |
download | FreeBSD-src-fe0bf623ad311f3aee6c729f327285b3baa24e34.zip FreeBSD-src-fe0bf623ad311f3aee6c729f327285b3baa24e34.tar.gz |
Assert the tcbinfo lock whenever tcp_close() is to be called by
tcp_input().
MFC after: 7 days
Diffstat (limited to 'sys/netinet/tcp_reass.c')
-rw-r--r-- | sys/netinet/tcp_reass.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c index cbd4068..7392610 100644 --- a/sys/netinet/tcp_reass.c +++ b/sys/netinet/tcp_reass.c @@ -1539,11 +1539,16 @@ trimthenstep6: close: tp->t_state = TCPS_CLOSED; tcpstat.tcps_drops++; + KASSERT(headlocked, ("tcp_input: " + "trimthenstep6: tcp_close: head not " + "locked")); tp = tcp_close(tp); break; case TCPS_CLOSING: case TCPS_LAST_ACK: + KASSERT(headlocked, ("trimthenstep6: " + "tcp_close.2: head not locked")); tp = tcp_close(tp); break; @@ -1651,6 +1656,8 @@ trimthenstep6: */ if ((so->so_state & SS_NOFDREF) && tp->t_state > TCPS_CLOSE_WAIT && tlen) { + KASSERT(headlocked, ("trimthenstep6: tcp_close.3: head not " + "locked")); tp = tcp_close(tp); tcpstat.tcps_rcvafterclose++; rstreason = BANDLIM_UNLIMITED; @@ -1676,6 +1683,8 @@ trimthenstep6: if (thflags & TH_SYN && tp->t_state == TCPS_TIME_WAIT && SEQ_GT(th->th_seq, tp->rcv_nxt)) { + KASSERT(headlocked, ("trimthenstep6: " + "tcp_close.4: head not locked")); tp = tcp_close(tp); goto findpcb; } @@ -2178,6 +2187,8 @@ process_ACK: */ case TCPS_LAST_ACK: if (ourfinisacked) { + KASSERT(headlocked, ("tcp_input: process_ACK:" + " tcp_close: head not locked")); tp = tcp_close(tp); goto drop; } |