SUNRPC: use request size to initialize bio_vec in svc_udp_sendto()
authorLucas Stach <l.stach@pengutronix.de>
Wed, 17 Jan 2024 21:06:28 +0000 (22:06 +0100)
committerChuck Lever <chuck.lever@oracle.com>
Wed, 17 Jan 2024 21:54:33 +0000 (16:54 -0500)
Use the proper size when setting up the bio_vec, as otherwise only
zero-length UDP packets will be sent.

Fixes: baabf59c2414 ("SUNRPC: Convert svc_udp_sendto() to use the per-socket bio_vec array")
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
net/sunrpc/svcsock.c

index bfb2f78523a8289f0a6ea758ca61c53d06832273..545017a3daa4d6b20255c51c6c0dea73ec32ecfc 100644 (file)
@@ -717,12 +717,12 @@ static int svc_udp_sendto(struct svc_rqst *rqstp)
                                ARRAY_SIZE(rqstp->rq_bvec), xdr);
 
        iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, rqstp->rq_bvec,
-                     count, 0);
+                     count, rqstp->rq_res.len);
        err = sock_sendmsg(svsk->sk_sock, &msg);
        if (err == -ECONNREFUSED) {
                /* ICMP error on earlier request. */
                iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, rqstp->rq_bvec,
-                             count, 0);
+                             count, rqstp->rq_res.len);
                err = sock_sendmsg(svsk->sk_sock, &msg);
        }