Merge tag 'nfsd-6.1-4' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 11 Nov 2022 19:28:26 +0000 (11:28 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 11 Nov 2022 19:28:26 +0000 (11:28 -0800)
Pull nfsd fixes from Chuck Lever:

 - Fix an export leak

 - Fix a potential tracepoint crash

* tag 'nfsd-6.1-4' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux:
  nfsd: put the export reference in nfsd4_verify_deleg_dentry
  nfsd: fix use-after-free in nfsd_file_do_acquire tracepoint

fs/nfsd/filecache.c
fs/nfsd/nfs4state.c

index adc4e87a71d25e57785d530ca1b4bff3f0d379ed..ec3fceb92236eb3be76e42ee0107245559741d1e 100644 (file)
@@ -1076,6 +1076,7 @@ retry:
                goto open_file;
 
        nfsd_file_slab_free(&nf->nf_rcu);
+       nf = NULL;
        if (ret == -EEXIST)
                goto retry;
        trace_nfsd_file_insert_err(rqstp, key.inode, may_flags, ret);
index 4e718500a00c4a1436685abc22760385fbc8e8db..836bd825ca4ad66a9d70de578e523d2bcbfba12a 100644 (file)
@@ -5382,6 +5382,7 @@ nfsd4_verify_deleg_dentry(struct nfsd4_open *open, struct nfs4_file *fp,
        if (err)
                return -EAGAIN;
 
+       exp_put(exp);
        dput(child);
        if (child != file_dentry(fp->fi_deleg_file->nf_file))
                return -EAGAIN;