diff options
author | Karsten Graul <kgraul@linux.ibm.com> | 2018-07-18 09:22:51 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-07-18 13:58:27 -0400 |
commit | f6bdc42f021194ec095914b92c7a8b1a09789e6d (patch) | |
tree | db8d7de3553bb23e760f9d1ec3222d9baa1af0c4 /net/smc | |
parent | ac0107edba253a6e58e923f9e68825decef3e681 (diff) |
net/smc: reset recv timeout after clc handshake
During clc handshake the receive timeout is set to CLC_WAIT_TIME.
Remember and reset the original timeout value after the receive calls,
and remove a duplicate assignment of CLC_WAIT_TIME.
Signed-off-by: Karsten Graul <kgraul@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')
-rw-r--r-- | net/smc/smc_clc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/smc/smc_clc.c b/net/smc/smc_clc.c index 717449b1da0b..ae5d168653ce 100644 --- a/net/smc/smc_clc.c +++ b/net/smc/smc_clc.c | |||
@@ -250,6 +250,7 @@ out: | |||
250 | int smc_clc_wait_msg(struct smc_sock *smc, void *buf, int buflen, | 250 | int smc_clc_wait_msg(struct smc_sock *smc, void *buf, int buflen, |
251 | u8 expected_type) | 251 | u8 expected_type) |
252 | { | 252 | { |
253 | long rcvtimeo = smc->clcsock->sk->sk_rcvtimeo; | ||
253 | struct sock *clc_sk = smc->clcsock->sk; | 254 | struct sock *clc_sk = smc->clcsock->sk; |
254 | struct smc_clc_msg_hdr *clcm = buf; | 255 | struct smc_clc_msg_hdr *clcm = buf; |
255 | struct msghdr msg = {NULL, 0}; | 256 | struct msghdr msg = {NULL, 0}; |
@@ -306,7 +307,6 @@ int smc_clc_wait_msg(struct smc_sock *smc, void *buf, int buflen, | |||
306 | memset(&msg, 0, sizeof(struct msghdr)); | 307 | memset(&msg, 0, sizeof(struct msghdr)); |
307 | iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &vec, 1, datlen); | 308 | iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &vec, 1, datlen); |
308 | krflags = MSG_WAITALL; | 309 | krflags = MSG_WAITALL; |
309 | smc->clcsock->sk->sk_rcvtimeo = CLC_WAIT_TIME; | ||
310 | len = sock_recvmsg(smc->clcsock, &msg, krflags); | 310 | len = sock_recvmsg(smc->clcsock, &msg, krflags); |
311 | if (len < datlen || !smc_clc_msg_hdr_valid(clcm)) { | 311 | if (len < datlen || !smc_clc_msg_hdr_valid(clcm)) { |
312 | smc->sk.sk_err = EPROTO; | 312 | smc->sk.sk_err = EPROTO; |
@@ -322,6 +322,7 @@ int smc_clc_wait_msg(struct smc_sock *smc, void *buf, int buflen, | |||
322 | } | 322 | } |
323 | 323 | ||
324 | out: | 324 | out: |
325 | smc->clcsock->sk->sk_rcvtimeo = rcvtimeo; | ||
325 | return reason_code; | 326 | return reason_code; |
326 | } | 327 | } |
327 | 328 | ||