kernel/net/core/stream.c
.. .. @@ -32,7 +32,7 @@ 32 32 struct socket *sock = sk->sk_socket; 33 33 struct socket_wq *wq; 34 34 35 - if (sk_stream_is_writeable(sk) && sock) {35 + if (__sk_stream_is_writeable(sk, 1) && sock) {36 36 clear_bit(SOCK_NOSPACE, &sock->flags); 37 37 38 38 rcu_read_lock(); .. .. @@ -159,7 +159,8 @@ 159 159 *timeo_p = current_timeo; 160 160 } 161 161 out: 162 - remove_wait_queue(sk_sleep(sk), &wait);162 + if (!sock_flag(sk, SOCK_DEAD))163 + remove_wait_queue(sk_sleep(sk), &wait);163 164 return err; 164 165 165 166 do_error: