]> git.dujemihanovic.xyz Git - linux.git/commitdiff
NFSD: Fix NFSv4's PUTPUBFH operation
authorChuck Lever <chuck.lever@oracle.com>
Sun, 11 Aug 2024 17:11:07 +0000 (13:11 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Fri, 20 Sep 2024 23:31:03 +0000 (19:31 -0400)
According to RFC 8881, all minor versions of NFSv4 support PUTPUBFH.

Replace the XDR decoder for PUTPUBFH with a "noop" since we no
longer want the minorversion check, and PUTPUBFH has no arguments to
decode. (Ideally nfsd4_decode_noop should really be called
nfsd4_decode_void).

PUTPUBFH should now behave just like PUTROOTFH.

Reported-by: Cedric Blancher <cedric.blancher@gmail.com>
Fixes: e1a90ebd8b23 ("NFSD: Combine decode operations for v4 and v4.1")
Cc: Dan Shelton <dan.f.shelton@gmail.com>
Cc: Roland Mainz <roland.mainz@nrubsig.org>
Cc: stable@vger.kernel.org
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs4xdr.c

index 4643fcfb7187abba55b4414213c7febac1e0313e..f118921250c3163ea45b77a53dc57ef364eec32b 100644 (file)
@@ -1245,14 +1245,6 @@ nfsd4_decode_putfh(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u)
        return nfs_ok;
 }
 
-static __be32
-nfsd4_decode_putpubfh(struct nfsd4_compoundargs *argp, union nfsd4_op_u *p)
-{
-       if (argp->minorversion == 0)
-               return nfs_ok;
-       return nfserr_notsupp;
-}
-
 static __be32
 nfsd4_decode_read(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u)
 {
@@ -2374,7 +2366,7 @@ static const nfsd4_dec nfsd4_dec_ops[] = {
        [OP_OPEN_CONFIRM]       = nfsd4_decode_open_confirm,
        [OP_OPEN_DOWNGRADE]     = nfsd4_decode_open_downgrade,
        [OP_PUTFH]              = nfsd4_decode_putfh,
-       [OP_PUTPUBFH]           = nfsd4_decode_putpubfh,
+       [OP_PUTPUBFH]           = nfsd4_decode_noop,
        [OP_PUTROOTFH]          = nfsd4_decode_noop,
        [OP_READ]               = nfsd4_decode_read,
        [OP_READDIR]            = nfsd4_decode_readdir,