diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 59adc76905e0d022211f68056175041fde326c4d..1a720c86e80a2e3a698b9d95ea7c7539a7a2f02a 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c @@ -1595,10 +1595,11 @@ static int shutdown(struct socket *sock, int how) case SS_DISCONNECTING: - /* Discard any unreceived messages; wake up sleeping tasks */ + /* Discard any unreceived messages */ discard_rx_queue(sk); - if (waitqueue_active(sk_sleep(sk))) - wake_up_interruptible(sk_sleep(sk)); + + /* Wake up anyone sleeping in poll */ + sk->sk_state_change(sk); res = 0; break;