diff options
author | rwatson <rwatson@FreeBSD.org> | 2005-06-01 12:08:15 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2005-06-01 12:08:15 +0000 |
commit | fc80f5f380e09334f29cf29624eaa7237a6c0542 (patch) | |
tree | 4104df355546251c62a8fa777d5fc5bcd46410f5 /sys/netinet/tcp_usrreq.c | |
parent | 36ab8094dd0913f2e3abfec8f68c8eb8a59b9932 (diff) | |
download | FreeBSD-src-fc80f5f380e09334f29cf29624eaa7237a6c0542.zip FreeBSD-src-fc80f5f380e09334f29cf29624eaa7237a6c0542.tar.gz |
Assert tcbinfo lock, inpcb lock in tcp_disconnect().
Assert tcbinfo lock, inpcb lock in in tcp_usrclosed().
MFC after: 7 days
Diffstat (limited to 'sys/netinet/tcp_usrreq.c')
-rw-r--r-- | sys/netinet/tcp_usrreq.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index 9777602..ccdc807 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -1236,7 +1236,11 @@ static struct tcpcb * tcp_disconnect(tp) register struct tcpcb *tp; { - struct socket *so = tp->t_inpcb->inp_socket; + struct inpcb *inp = tp->t_inpcb; + struct socket *so = inp->inp_socket; + + INP_INFO_WLOCK_ASSERT(&tcbinfo); + INP_LOCK_ASSERT(inp); if (tp->t_state < TCPS_ESTABLISHED) tp = tcp_close(tp); @@ -1267,6 +1271,9 @@ tcp_usrclosed(tp) register struct tcpcb *tp; { + INP_INFO_WLOCK_ASSERT(&tcbinfo); + INP_LOCK_ASSERT(tp->t_inpcb); + switch (tp->t_state) { case TCPS_CLOSED: |