]> git.baikalelectronics.ru Git - kernel.git/commitdiff
NFSv4: Fix the alignment of page data in the getdeviceinfo reply
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sat, 14 Nov 2020 02:42:16 +0000 (21:42 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 2 Dec 2020 19:05:53 +0000 (14:05 -0500)
We can fit the device_addr4 opaque data padding in the pages.

Fixes: d5e7b4319868 ("SUNRPC: Introduce rpc_prepare_reply_pages()")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/nfs4xdr.c

index c6dbfcae75171e57039b67c82ed36dc093590068..c16b93df1bc14222d7dd4393704f7d090cbd6d74 100644 (file)
@@ -3009,15 +3009,19 @@ static void nfs4_xdr_enc_getdeviceinfo(struct rpc_rqst *req,
        struct compound_hdr hdr = {
                .minorversion = nfs4_xdr_minorversion(&args->seq_args),
        };
+       uint32_t replen;
 
        encode_compound_hdr(xdr, req, &hdr);
        encode_sequence(xdr, &args->seq_args, &hdr);
+
+       replen = hdr.replen + op_decode_hdr_maxsz;
+
        encode_getdeviceinfo(xdr, args, &hdr);
 
-       /* set up reply kvec. Subtract notification bitmap max size (2)
-        * so that notification bitmap is put in xdr_buf tail */
+       /* set up reply kvec. device_addr4 opaque data is read into the
+        * pages */
        rpc_prepare_reply_pages(req, args->pdev->pages, args->pdev->pgbase,
-                               args->pdev->pglen, hdr.replen - 2);
+                               args->pdev->pglen, replen + 2 + 1);
        encode_nops(&hdr);
 }