nfsd_lookup_dentry returns an export reference in addition to the dentry
ref. Ensure that we put it too.
Link: https://bugzilla.redhat.com/show_bug.cgi?id=2138866
Fixes: 876c553cb410 ("NFSD: verify the opened dentry after setting a delegation")
Reported-by: Yongcheng Yang <[email protected]>
Signed-off-by: Jeff Layton <[email protected]>
---
fs/nfsd/nfs4state.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 554c4e50caf8..2ec981fd2985 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -5407,6 +5407,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;
--
2.38.1
> On Nov 8, 2022, at 11:23 AM, Jeff Layton <[email protected]> wrote:
>
> nfsd_lookup_dentry returns an export reference in addition to the dentry
> ref. Ensure that we put it too.
>
> Link: https://bugzilla.redhat.com/show_bug.cgi?id=2138866
> Fixes: 876c553cb410 ("NFSD: verify the opened dentry after setting a delegation")
> Reported-by: Yongcheng Yang <[email protected]>
> Signed-off-by: Jeff Layton <[email protected]>
Applied to nfsd's for-rc (-> 6.1-rc). Thank you both!
> ---
> fs/nfsd/nfs4state.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index 554c4e50caf8..2ec981fd2985 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -5407,6 +5407,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;
> --
> 2.38.1
>
--
Chuck Lever