aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Coddington2016-02-17 09:41:41 -0600
committerGreg Kroah-Hartman2016-03-03 17:06:53 -0600
commitd4db460720392ee6cb687db260417c85fd8c7fc4 (patch)
tree14d1bd1b4b634b0a0b97d81db8507f79c72aeb2e
parentebbc1058f6efbd635e6c7c19cba5db1ad3acfcda (diff)
downloadkernel-video-d4db460720392ee6cb687db260417c85fd8c7fc4.tar.gz
kernel-video-d4db460720392ee6cb687db260417c85fd8c7fc4.tar.xz
kernel-video-d4db460720392ee6cb687db260417c85fd8c7fc4.zip
NFSv4: Fix a dentry leak on alias use
commit d9dfd8d741683347ee159d25f5b50c346a0df557 upstream. In the case where d_add_unique() finds an appropriate alias to use it will have already incremented the reference count. An additional dget() to swap the open context's dentry is unnecessary and will leak a reference. Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Fixes: 275bb307865a3 ("NFSv4: Move dentry instantiation into the NFSv4-...") Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--fs/nfs/nfs4proc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 45a7dd36b4a..3b5e86fd280 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -2187,9 +2187,9 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
2187 dentry = d_add_unique(dentry, igrab(state->inode)); 2187 dentry = d_add_unique(dentry, igrab(state->inode));
2188 if (dentry == NULL) { 2188 if (dentry == NULL) {
2189 dentry = opendata->dentry; 2189 dentry = opendata->dentry;
2190 } else if (dentry != ctx->dentry) { 2190 } else {
2191 dput(ctx->dentry); 2191 dput(ctx->dentry);
2192 ctx->dentry = dget(dentry); 2192 ctx->dentry = dentry;
2193 } 2193 }
2194 nfs_set_verifier(dentry, 2194 nfs_set_verifier(dentry,
2195 nfs_save_change_attribute(opendata->dir->d_inode)); 2195 nfs_save_change_attribute(opendata->dir->d_inode));