summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2004-12-25 22:26:13 +0000
committerrwatson <rwatson@FreeBSD.org>2004-12-25 22:26:13 +0000
commit894710c9420492f20a9159e500e3e63ed3fa7899 (patch)
tree7ddc4f90cb86a3edc06e507af7131e819671619e /sys/netinet
parent203f380ce71b4a11bc70a767c0af75c72d657c74 (diff)
downloadFreeBSD-src-894710c9420492f20a9159e500e3e63ed3fa7899.zip
FreeBSD-src-894710c9420492f20a9159e500e3e63ed3fa7899.tar.gz
In the dropafterack case of tcp_input(), it's OK to release the TCP
pcbinfo lock before calling tcp_output(), as holding just the inpcb lock is sufficient to prevent garbage collection.
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/tcp_input.c2
-rw-r--r--sys/netinet/tcp_reass.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index f3b158e..41fceac 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -2431,10 +2431,10 @@ dropafterack:
&tcp_savetcp, 0);
#endif
KASSERT(headlocked, ("headlocked should be 1"));
+ INP_INFO_WUNLOCK(&tcbinfo);
tp->t_flags |= TF_ACKNOW;
(void) tcp_output(tp);
INP_UNLOCK(inp);
- INP_INFO_WUNLOCK(&tcbinfo);
m_freem(m);
return;
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c
index f3b158e..41fceac 100644
--- a/sys/netinet/tcp_reass.c
+++ b/sys/netinet/tcp_reass.c
@@ -2431,10 +2431,10 @@ dropafterack:
&tcp_savetcp, 0);
#endif
KASSERT(headlocked, ("headlocked should be 1"));
+ INP_INFO_WUNLOCK(&tcbinfo);
tp->t_flags |= TF_ACKNOW;
(void) tcp_output(tp);
INP_UNLOCK(inp);
- INP_INFO_WUNLOCK(&tcbinfo);
m_freem(m);
return;
OpenPOWER on IntegriCloud