diff options
Diffstat (limited to 'fs/jfs/namei.c')
-rw-r--r-- | fs/jfs/namei.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c index 2aba82386810..e199dde7b83c 100644 --- a/fs/jfs/namei.c +++ b/fs/jfs/namei.c | |||
@@ -1511,25 +1511,12 @@ struct dentry *jfs_fh_to_parent(struct super_block *sb, struct fid *fid, | |||
1511 | 1511 | ||
1512 | struct dentry *jfs_get_parent(struct dentry *dentry) | 1512 | struct dentry *jfs_get_parent(struct dentry *dentry) |
1513 | { | 1513 | { |
1514 | struct super_block *sb = dentry->d_inode->i_sb; | ||
1515 | struct dentry *parent = ERR_PTR(-ENOENT); | ||
1516 | struct inode *inode; | ||
1517 | unsigned long parent_ino; | 1514 | unsigned long parent_ino; |
1518 | 1515 | ||
1519 | parent_ino = | 1516 | parent_ino = |
1520 | le32_to_cpu(JFS_IP(dentry->d_inode)->i_dtroot.header.idotdot); | 1517 | le32_to_cpu(JFS_IP(dentry->d_inode)->i_dtroot.header.idotdot); |
1521 | inode = jfs_iget(sb, parent_ino); | ||
1522 | if (IS_ERR(inode)) { | ||
1523 | parent = ERR_CAST(inode); | ||
1524 | } else { | ||
1525 | parent = d_alloc_anon(inode); | ||
1526 | if (!parent) { | ||
1527 | parent = ERR_PTR(-ENOMEM); | ||
1528 | iput(inode); | ||
1529 | } | ||
1530 | } | ||
1531 | 1518 | ||
1532 | return parent; | 1519 | return d_obtain_alias(jfs_iget(dentry->d_inode->i_sb, parent_ino)); |
1533 | } | 1520 | } |
1534 | 1521 | ||
1535 | const struct inode_operations jfs_dir_inode_operations = { | 1522 | const struct inode_operations jfs_dir_inode_operations = { |