]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
net/smc: use announced length in sock_recvmsg()
authorUrsula Braun <ubraun@linux.vnet.ibm.com>
Tue, 27 Mar 2018 08:43:50 +0000 (10:43 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 27 Mar 2018 15:59:49 +0000 (11:59 -0400)
Not every CLC proposal message needs the maximum buffer length.
Due to the MSG_WAITALL flag, it is important to use the peeked
real length when receiving the message.

Fixes: d63d271ce2b5ce ("smc: switch to sock_recvmsg()")
Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/smc/smc_clc.c

index 8ac51583a063ca27449c52b296e0b3372d635261..15c213250606f46d136e14a6d9b948343ff81743 100644 (file)
@@ -133,7 +133,7 @@ int smc_clc_wait_msg(struct smc_sock *smc, void *buf, int buflen,
 
        /* receive the complete CLC message */
        memset(&msg, 0, sizeof(struct msghdr));
-       iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &vec, 1, buflen);
+       iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &vec, 1, datlen);
        krflags = MSG_WAITALL;
        smc->clcsock->sk->sk_rcvtimeo = CLC_WAIT_TIME;
        len = sock_recvmsg(smc->clcsock, &msg, krflags);