diff options
author | Stefan Raspl <stefan.raspl@linux.ibm.com> | 2018-05-03 18:12:36 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-05-04 11:45:06 -0400 |
commit | c8b8ec8e0d605872c62909e7af54fb0bcb174d0c (patch) | |
tree | e4151b67de58be0843a4e7f1603c36303d317fe9 /net/smc/smc_rx.c | |
parent | a7b15ab887e5b8e9803136b5a4a0008d7a3dea86 (diff) | |
download | linux-stable-c8b8ec8e0d605872c62909e7af54fb0bcb174d0c.tar.gz linux-stable-c8b8ec8e0d605872c62909e7af54fb0bcb174d0c.tar.bz2 linux-stable-c8b8ec8e0d605872c62909e7af54fb0bcb174d0c.zip |
smc: simplify abort logic
Some of the conditions to exit recv() are common in two pathes - cleaning up
code by moving the check up so we have it only once.
Signed-off-by: Stefan Raspl <raspl@linux.ibm.com>
Signed-off-by: Ursula Braun <ubraun@linux.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 | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/net/smc/smc_rx.c b/net/smc/smc_rx.c index af851d8df1f8..def33fb29ac9 100644 --- a/net/smc/smc_rx.c +++ b/net/smc/smc_rx.c @@ -112,26 +112,22 @@ int smc_rx_recvmsg(struct smc_sock *smc, struct msghdr *msg, size_t len, if (atomic_read(&conn->bytes_to_rcv)) goto copy; + if (sk->sk_shutdown & RCV_SHUTDOWN || + smc_cdc_rxed_any_close_or_senddone(conn) || + conn->local_tx_ctrl.conn_state_flags.peer_conn_abort) + break; + if (read_done) { if (sk->sk_err || sk->sk_state == SMC_CLOSED || - sk->sk_shutdown & RCV_SHUTDOWN || !timeo || - signal_pending(current) || - smc_cdc_rxed_any_close_or_senddone(conn) || - conn->local_tx_ctrl.conn_state_flags. - peer_conn_abort) + signal_pending(current)) break; } else { if (sk->sk_err) { read_done = sock_error(sk); break; } - if (sk->sk_shutdown & RCV_SHUTDOWN || - smc_cdc_rxed_any_close_or_senddone(conn) || - conn->local_tx_ctrl.conn_state_flags. - peer_conn_abort) - break; if (sk->sk_state == SMC_CLOSED) { if (!sock_flag(sk, SOCK_DONE)) { /* This occurs when user tries to read |