diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-20 13:44:09 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-20 13:44:09 -0500 |
commit | 12de3b35ea549c5819f287508d7afab0bf3ac44d (patch) | |
tree | c1b7f96236c4b19bcd911705017bf31bcbc2b605 /net/sunrpc/rpc_pipe.c | |
parent | 24c5d9d7ea5a64fb5f157d17aa2c67a3300f8a08 (diff) |
SUNRPC: Ensure that rpc_mkpipe returns a refcounted dentry
If not, we cannot guarantee that idmap->idmap_dentry, gss_auth->dentry and
clnt->cl_dentry are valid dentries.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net/sunrpc/rpc_pipe.c')
-rw-r--r-- | net/sunrpc/rpc_pipe.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 567abbe25bc8..72b22172f0af 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c | |||
@@ -669,7 +669,7 @@ rpc_mkdir(char *path, struct rpc_clnt *rpc_client) | |||
669 | out: | 669 | out: |
670 | mutex_unlock(&dir->i_mutex); | 670 | mutex_unlock(&dir->i_mutex); |
671 | rpc_release_path(&nd); | 671 | rpc_release_path(&nd); |
672 | return dentry; | 672 | return dget(dentry); |
673 | err_depopulate: | 673 | err_depopulate: |
674 | rpc_depopulate(dentry); | 674 | rpc_depopulate(dentry); |
675 | __rpc_rmdir(dir, dentry); | 675 | __rpc_rmdir(dir, dentry); |
@@ -733,7 +733,7 @@ rpc_mkpipe(char *path, void *private, struct rpc_pipe_ops *ops, int flags) | |||
733 | out: | 733 | out: |
734 | mutex_unlock(&dir->i_mutex); | 734 | mutex_unlock(&dir->i_mutex); |
735 | rpc_release_path(&nd); | 735 | rpc_release_path(&nd); |
736 | return dentry; | 736 | return dget(dentry); |
737 | err_dput: | 737 | err_dput: |
738 | dput(dentry); | 738 | dput(dentry); |
739 | dentry = ERR_PTR(-ENOMEM); | 739 | dentry = ERR_PTR(-ENOMEM); |