diff options
author | Ursula Braun <ubraun@linux.vnet.ibm.com> | 2017-04-10 14:58:00 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-04-11 23:01:14 -0400 |
commit | 90e9517ed9615f9fb23fbef7d279f81e6c5c08b2 (patch) | |
tree | b70ab7f4566eb2ef17fd14d628f91baac4d8e82e /net | |
parent | 90cacb2ea60c37b9a413a2d7dcb244c3d397c060 (diff) | |
download | op-kernel-dev-90e9517ed9615f9fb23fbef7d279f81e6c5c08b2.zip op-kernel-dev-90e9517ed9615f9fb23fbef7d279f81e6c5c08b2.tar.gz |
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')
-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 c4ef9a4..f0c8b08 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(); } |