]> git.itanic.dy.fi Git - linux-stable/commitdiff
xprtrdma: fix incorrect header size calculations
authorColin Ian King <colin.king@canonical.com>
Wed, 15 Jul 2020 16:26:04 +0000 (17:26 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 25 Jun 2022 09:45:19 +0000 (11:45 +0200)
commit 912288442cb2f431bf3c8cb097a5de83bc6dbac1 upstream.

Currently the header size calculations are using an assignment
operator instead of a += operator when accumulating the header
size leading to incorrect sizes.  Fix this by using the correct
operator.

Addresses-Coverity: ("Unused value")
Fixes: 302d3deb2068 ("xprtrdma: Prevent inline overflow")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
[bwh: Backported to 4.9: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/sunrpc/xprtrdma/rpc_rdma.c

index 0287734f126f609c5e1f86244e51ff37a002e26c..aec0113a88b086d1529cd38e2d514da0d0123085 100644 (file)
@@ -75,7 +75,7 @@ static unsigned int rpcrdma_max_call_header_size(unsigned int maxsegs)
 
        /* Maximum Read list size */
        maxsegs += 2;   /* segment for head and tail buffers */
-       size = maxsegs * sizeof(struct rpcrdma_read_chunk);
+       size += maxsegs * sizeof(struct rpcrdma_read_chunk);
 
        /* Minimal Read chunk size */
        size += sizeof(__be32); /* segment count */
@@ -101,7 +101,7 @@ static unsigned int rpcrdma_max_reply_header_size(unsigned int maxsegs)
 
        /* Maximum Write list size */
        maxsegs += 2;   /* segment for head and tail buffers */
-       size = sizeof(__be32);          /* segment count */
+       size += sizeof(__be32);         /* segment count */
        size += maxsegs * sizeof(struct rpcrdma_segment);
        size += sizeof(__be32); /* list discriminator */