summaryrefslogtreecommitdiff
path: root/net/sunrpc
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2018-04-03 08:15:46 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-04-24 10:29:28 +0300
commitd5975c5bbc6e04c95b7b62a8544dc37bded80827 (patch)
tree89d35a69fba18f312ef6a45a3b500d69be8be23b /net/sunrpc
parentd44291735c573c645d2fba54a8eb80916e2f2c0e (diff)
downloadlinux-d5975c5bbc6e04c95b7b62a8544dc37bded80827.tar.xz
rpc_pipefs: fix double-dput()
commit 4a3877c4cedd95543f8726b0a98743ed8db0c0fb upstream. if we ever hit rpc_gssd_dummy_depopulate() dentry passed to it has refcount equal to 1. __rpc_rmpipe() drops it and dput() done after that hits an already freed dentry. Cc: stable@kernel.org Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/sunrpc')
-rw-r--r--net/sunrpc/rpc_pipe.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
index 2d12b76b5a64..d8cfd7048721 100644
--- a/net/sunrpc/rpc_pipe.c
+++ b/net/sunrpc/rpc_pipe.c
@@ -1375,6 +1375,7 @@ rpc_gssd_dummy_depopulate(struct dentry *pipe_dentry)
struct dentry *clnt_dir = pipe_dentry->d_parent;
struct dentry *gssd_dir = clnt_dir->d_parent;
+ dget(pipe_dentry);
__rpc_rmpipe(clnt_dir->d_inode, pipe_dentry);
__rpc_depopulate(clnt_dir, gssd_dummy_info_file, 0, 1);
__rpc_depopulate(gssd_dir, gssd_dummy_clnt_dir, 0, 1);