]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-5.15/nfsd-de-duplicate-nfsd4_decode_bitmap4.patch
Fixes for 5.15
[thirdparty/kernel/stable-queue.git] / queue-5.15 / nfsd-de-duplicate-nfsd4_decode_bitmap4.patch
1 From 1e08cf62dca3a4e9ced1e2a347cfec60d61e35fb Mon Sep 17 00:00:00 2001
2 From: Sasha Levin <sashal@kernel.org>
3 Date: Mon, 13 Dec 2021 10:20:45 -0500
4 Subject: NFSD: De-duplicate nfsd4_decode_bitmap4()
5
6 From: Chuck Lever <chuck.lever@oracle.com>
7
8 [ Upstream commit cd2e999c7c394ae916d8be741418b3c6c1dddea8 ]
9
10 Clean up. Trond points out that xdr_stream_decode_uint32_array()
11 does the same thing as nfsd4_decode_bitmap4().
12
13 Suggested-by: Trond Myklebust <trondmy@hammerspace.com>
14 Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
15 ---
16 fs/nfsd/nfs4xdr.c | 17 +++--------------
17 1 file changed, 3 insertions(+), 14 deletions(-)
18
19 diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
20 index 506ecfca2338b..4459722259fb2 100644
21 --- a/fs/nfsd/nfs4xdr.c
22 +++ b/fs/nfsd/nfs4xdr.c
23 @@ -277,21 +277,10 @@ nfsd4_decode_verifier4(struct nfsd4_compoundargs *argp, nfs4_verifier *verf)
24 static __be32
25 nfsd4_decode_bitmap4(struct nfsd4_compoundargs *argp, u32 *bmval, u32 bmlen)
26 {
27 - u32 i, count;
28 - __be32 *p;
29 -
30 - if (xdr_stream_decode_u32(argp->xdr, &count) < 0)
31 - return nfserr_bad_xdr;
32 - /* request sanity */
33 - if (count > 1000)
34 - return nfserr_bad_xdr;
35 - p = xdr_inline_decode(argp->xdr, count << 2);
36 - if (!p)
37 - return nfserr_bad_xdr;
38 - for (i = 0; i < bmlen; i++)
39 - bmval[i] = (i < count) ? be32_to_cpup(p++) : 0;
40 + ssize_t status;
41
42 - return nfs_ok;
43 + status = xdr_stream_decode_uint32_array(argp->xdr, bmval, bmlen);
44 + return status == -EBADMSG ? nfserr_bad_xdr : nfs_ok;
45 }
46
47 static __be32
48 --
49 2.43.0
50