summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authornp <np@FreeBSD.org>2011-10-12 19:52:23 +0000
committernp <np@FreeBSD.org>2011-10-12 19:52:23 +0000
commitaf7a62a68c141363f984b52274326a5200d99e06 (patch)
treed3c83a01bed630acbe9d26ec5ee91792d8e042eb /sys/netinet
parente999aa7f371bd497d251ccb9d4b2a2e47b228751 (diff)
downloadFreeBSD-src-af7a62a68c141363f984b52274326a5200d99e06.zip
FreeBSD-src-af7a62a68c141363f984b52274326a5200d99e06.tar.gz
Make sure the inp wasn't dropped when rexmt let go of the inp and
pcbinfo locks. Reviewed by: andre@ MFC after: 7 days
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/tcp_timer.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c
index 73984c7..1651d69 100644
--- a/sys/netinet/tcp_timer.c
+++ b/sys/netinet/tcp_timer.c
@@ -495,6 +495,13 @@ tcp_timer_rexmt(void * xtp)
CURVNET_RESTORE();
return;
}
+ if (inp->inp_flags & INP_DROPPED) {
+ INP_WUNLOCK(inp);
+ INP_INFO_WUNLOCK(&V_tcbinfo);
+ CURVNET_RESTORE();
+ return;
+ }
+
tp = tcp_drop(tp, tp->t_softerror ?
tp->t_softerror : ETIMEDOUT);
headlocked = 1;
OpenPOWER on IntegriCloud