summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_reass.c
diff options
context:
space:
mode:
authorjlemon <jlemon@FreeBSD.org>2003-02-26 13:55:13 +0000
committerjlemon <jlemon@FreeBSD.org>2003-02-26 13:55:13 +0000
commitcdfe62aafbb441acdb1e2168a9d9e599976128c7 (patch)
tree9c24fee96b0007eb0d16be53cceb48c4549d5736 /sys/netinet/tcp_reass.c
parent1f8bf0512e8aeb2f31eccca8d86c1ee4518413b1 (diff)
downloadFreeBSD-src-cdfe62aafbb441acdb1e2168a9d9e599976128c7.zip
FreeBSD-src-cdfe62aafbb441acdb1e2168a9d9e599976128c7.tar.gz
The TCP protocol lock may still be held if the reassembly queue dropped FIN.
Detect this case and drop the lock accordingly. Sponsored by: DARPA, NAI Labs
Diffstat (limited to 'sys/netinet/tcp_reass.c')
-rw-r--r--sys/netinet/tcp_reass.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c
index 63d1c1c..2fec783 100644
--- a/sys/netinet/tcp_reass.c
+++ b/sys/netinet/tcp_reass.c
@@ -2217,7 +2217,8 @@ check_delack:
callout_reset(tp->tt_delack, tcp_delacktime,
tcp_timer_delack, tp);
}
- KASSERT(headlocked == 0, ("headlocked should be 0"));
+ if (headlocked)
+ INP_INFO_WUNLOCK(&tcbinfo);
INP_UNLOCK(inp);
return;
OpenPOWER on IntegriCloud