diff options
author | Yu Xiangning <Eric.Yu@Sun.COM> | 2008-09-15 18:42:36 -0700 |
---|---|---|
committer | Yu Xiangning <Eric.Yu@Sun.COM> | 2008-09-15 18:42:36 -0700 |
commit | 8380b3cc879a715dff53a0564cd5b1c4bf9ade62 (patch) | |
tree | 4005c6c50103146f7aacd9e91e12910a34f42b9c /usr/src/uts/common/inet/tcp/tcp.c | |
parent | 4d5451d2e1f6db64ed13dd3f5903c883f61779fe (diff) | |
download | illumos-gate-8380b3cc879a715dff53a0564cd5b1c4bf9ade62.tar.gz |
6732854 panic: assertion failed: (connp->conn_fanout != 0L && connp->conn_ref >= 4) ...
Diffstat (limited to 'usr/src/uts/common/inet/tcp/tcp.c')
-rw-r--r-- | usr/src/uts/common/inet/tcp/tcp.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/usr/src/uts/common/inet/tcp/tcp.c b/usr/src/uts/common/inet/tcp/tcp.c index 50046053b0..d7b568e98c 100644 --- a/usr/src/uts/common/inet/tcp/tcp.c +++ b/usr/src/uts/common/inet/tcp/tcp.c @@ -18230,6 +18230,8 @@ tcp_accept_finish(void *arg, mblk_t *mp, void *arg2) */ CONN_DEC_REF(tcp->tcp_saved_listener->tcp_connp); + tcp->tcp_detached = B_FALSE; + if (tcp->tcp_state <= TCPS_BOUND || tcp->tcp_accept_error) { /* * Someone blewoff the eager before we could finish @@ -18279,7 +18281,6 @@ tcp_accept_finish(void *arg, mblk_t *mp, void *arg2) tcp->tcp_hard_binding = B_FALSE; tcp->tcp_hard_bound = B_TRUE; } - tcp->tcp_detached = B_FALSE; return; } @@ -18816,11 +18817,8 @@ no_more_eagers: * but we still have an extra refs on eager (apart from the * usual tcp references). The ref was placed in tcp_rput_data * before sending the conn_ind in tcp_send_conn_ind. - * The ref will be dropped in tcp_accept_finish(). As sockfs - * has already established this tcp with it's own stream, - * it's OK to set tcp_detached to B_FALSE. + * The ref will be dropped in tcp_accept_finish(). */ - econnp->conn_tcp->tcp_detached = B_FALSE; squeue_enter_nodrain(econnp->conn_sqp, opt_mp, tcp_accept_finish, econnp, SQTAG_TCP_ACCEPT_FINISH_Q0); return; |