diff options
Diffstat (limited to 'net/sunrpc/rpc_pipe.c')
-rw-r--r-- | net/sunrpc/rpc_pipe.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 9ea45383480e..20e30c6f8355 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c | |||
@@ -587,6 +587,8 @@ static struct dentry *__rpc_lookup_create_exclusive(struct dentry *parent, | |||
587 | struct dentry *dentry; | 587 | struct dentry *dentry; |
588 | 588 | ||
589 | dentry = __rpc_lookup_create(parent, name); | 589 | dentry = __rpc_lookup_create(parent, name); |
590 | if (IS_ERR(dentry)) | ||
591 | return dentry; | ||
590 | if (dentry->d_inode == NULL) | 592 | if (dentry->d_inode == NULL) |
591 | return dentry; | 593 | return dentry; |
592 | dput(dentry); | 594 | dput(dentry); |
@@ -999,19 +1001,14 @@ rpc_fill_super(struct super_block *sb, void *data, int silent) | |||
999 | inode = rpc_get_inode(sb, S_IFDIR | 0755); | 1001 | inode = rpc_get_inode(sb, S_IFDIR | 0755); |
1000 | if (!inode) | 1002 | if (!inode) |
1001 | return -ENOMEM; | 1003 | return -ENOMEM; |
1002 | root = d_alloc_root(inode); | 1004 | sb->s_root = root = d_alloc_root(inode); |
1003 | if (!root) { | 1005 | if (!root) { |
1004 | iput(inode); | 1006 | iput(inode); |
1005 | return -ENOMEM; | 1007 | return -ENOMEM; |
1006 | } | 1008 | } |
1007 | if (rpc_populate(root, files, RPCAUTH_lockd, RPCAUTH_RootEOF, NULL)) | 1009 | if (rpc_populate(root, files, RPCAUTH_lockd, RPCAUTH_RootEOF, NULL)) |
1008 | goto out; | 1010 | return -ENOMEM; |
1009 | sb->s_root = root; | ||
1010 | return 0; | 1011 | return 0; |
1011 | out: | ||
1012 | d_genocide(root); | ||
1013 | dput(root); | ||
1014 | return -ENOMEM; | ||
1015 | } | 1012 | } |
1016 | 1013 | ||
1017 | static int | 1014 | static int |