From: Chuck Lever <chuck.lever@xxxxxxxxxx> commit 202f39039a11402dcbcd5fece8d9fa6be83f49ae upstream. 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@xxxxxxxxx> Fixes: e1a90ebd8b23 ("NFSD: Combine decode operations for v4 and v4.1") Cc: Dan Shelton <dan.f.shelton@xxxxxxxxx> Cc: Roland Mainz <roland.mainz@xxxxxxxxxxx> Cc: stable@xxxxxxxxxxxxxxx Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- fs/nfsd/nfs4xdr.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1246,14 +1246,6 @@ nfsd4_decode_putfh(struct nfsd4_compound } 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) { struct nfsd4_read *read = &u->read; @@ -2345,7 +2337,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, Patches currently in stable-queue which might be from chuck.lever@xxxxxxxxxx are queue-5.10/nfsd-fix-nfsv4-s-putpubfh-operation.patch queue-5.10/nfsd-fix-refcount-leak-when-file-is-unhashed-after-b.patch queue-5.10/nfsd-map-the-ebadmsg-to-nfserr_io-to-avoid-warning.patch queue-5.10/nfsd-return-einval-when-namelen-is-0.patch queue-5.10/selinux-smack-don-t-bypass-permissions-check-in-inode_setsecctx-hook.patch queue-5.10/nfsd-fix-delegation_blocked-to-block-correctly-for-at-least-30-seconds.patch queue-5.10/nfsd-remove-unneeded-eexist-error-check-in-nfsd_do_f.patch queue-5.10/nfsd-call-cache_put-if-xdr_reserve_space-returns-nul.patch