diff options
author | Ursula Braun <ubraun@linux.vnet.ibm.com> | 2017-04-10 15:58:00 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-04-12 06:01:14 +0300 |
commit | 90e9517ed9615f9fb23fbef7d279f81e6c5c08b2 (patch) | |
tree | b70ab7f4566eb2ef17fd14d628f91baac4d8e82e /net/smc/smc_rx.c | |
parent | 90cacb2ea60c37b9a413a2d7dcb244c3d397c060 (diff) | |
download | linux-90e9517ed9615f9fb23fbef7d279f81e6c5c08b2.tar.xz |
net/smc: always call the POLL_IN part of sk_wake_async
Wake up reading file descriptors for a closing socket as well, otherwise
some socket applications may stall.
Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
Reviewed-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc_rx.c')
-rw-r--r-- | net/smc/smc_rx.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/net/smc/smc_rx.c b/net/smc/smc_rx.c index c4ef9a4ec569..f0c8b089f770 100644 --- a/net/smc/smc_rx.c +++ b/net/smc/smc_rx.c @@ -36,11 +36,10 @@ static void smc_rx_data_ready(struct sock *sk) if (skwq_has_sleeper(wq)) wake_up_interruptible_sync_poll(&wq->wait, POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND); + sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN); if ((sk->sk_shutdown == SHUTDOWN_MASK) || (sk->sk_state == SMC_CLOSED)) sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_HUP); - else - sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN); rcu_read_unlock(); } |