diff options
Diffstat (limited to 'kernel/inode.c')
-rw-r--r-- | kernel/inode.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/kernel/inode.c b/kernel/inode.c index f702a4a..d935d58 100644 --- a/kernel/inode.c +++ b/kernel/inode.c @@ -520,34 +520,30 @@ static struct inode *get_root_inode(struct super_block *sb, unsigned mode) #ifdef KERNEL_2_6 static struct dentry *fuse_get_dentry(struct super_block *sb, void *vobjp) { - int err; __u32 *objp = vobjp; unsigned long nodeid = objp[0]; __u32 generation = objp[1]; struct inode *inode; struct dentry *entry; - err = -ESTALE; if (nodeid == 0) - goto error; + return ERR_PTR(-ESTALE); inode = ilookup5(sb, nodeid, fuse_inode_eq, &nodeid); if (!inode) - goto error; - if (inode->i_generation != generation) - goto error_iput; + return ERR_PTR(-ESTALE); + if (inode->i_generation != generation) { + iput(inode); + return ERR_PTR(-ESTALE); + } - err = -ENOMEM; entry = d_alloc_anon(inode); - if (!entry) - goto error_iput; + if (!entry) { + iput(inode); + return ERR_PTR(-ENOMEM); + } return entry; - - error_iput: - iput(inode); - error: - return ERR_PTR(err); } static int fuse_encode_fh(struct dentry *dentry, __u32 *fh, int *max_len, |