aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext3/namei.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext3/namei.c')
-rw-r--r--fs/ext3/namei.c33
1 files changed, 9 insertions, 24 deletions
diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c
index 4ab6f76e63d0..dec3e0d88ab1 100644
--- a/fs/ext3/namei.c
+++ b/fs/ext3/namei.c
@@ -860,14 +860,10 @@ static struct buffer_head * ext3_find_entry (struct dentry *dentry,
860 int nblocks, i, err; 860 int nblocks, i, err;
861 struct inode *dir = dentry->d_parent->d_inode; 861 struct inode *dir = dentry->d_parent->d_inode;
862 int namelen; 862 int namelen;
863 const u8 *name;
864 unsigned blocksize;
865 863
866 *res_dir = NULL; 864 *res_dir = NULL;
867 sb = dir->i_sb; 865 sb = dir->i_sb;
868 blocksize = sb->s_blocksize;
869 namelen = dentry->d_name.len; 866 namelen = dentry->d_name.len;
870 name = dentry->d_name.name;
871 if (namelen > EXT3_NAME_LEN) 867 if (namelen > EXT3_NAME_LEN)
872 return NULL; 868 return NULL;
873 if (is_dx(dir)) { 869 if (is_dx(dir)) {
@@ -1041,17 +1037,11 @@ static struct dentry *ext3_lookup(struct inode * dir, struct dentry *dentry, str
1041 if (!ext3_valid_inum(dir->i_sb, ino)) { 1037 if (!ext3_valid_inum(dir->i_sb, ino)) {
1042 ext3_error(dir->i_sb, "ext3_lookup", 1038 ext3_error(dir->i_sb, "ext3_lookup",
1043 "bad inode number: %lu", ino); 1039 "bad inode number: %lu", ino);
1044 inode = NULL; 1040 return ERR_PTR(-EIO);
1045 } else
1046 inode = iget(dir->i_sb, ino);
1047
1048 if (!inode)
1049 return ERR_PTR(-EACCES);
1050
1051 if (is_bad_inode(inode)) {
1052 iput(inode);
1053 return ERR_PTR(-ENOENT);
1054 } 1041 }
1042 inode = ext3_iget(dir->i_sb, ino);
1043 if (IS_ERR(inode))
1044 return ERR_CAST(inode);
1055 } 1045 }
1056 return d_splice_alias(inode, dentry); 1046 return d_splice_alias(inode, dentry);
1057} 1047}
@@ -1080,18 +1070,13 @@ struct dentry *ext3_get_parent(struct dentry *child)
1080 if (!ext3_valid_inum(child->d_inode->i_sb, ino)) { 1070 if (!ext3_valid_inum(child->d_inode->i_sb, ino)) {
1081 ext3_error(child->d_inode->i_sb, "ext3_get_parent", 1071 ext3_error(child->d_inode->i_sb, "ext3_get_parent",
1082 "bad inode number: %lu", ino); 1072 "bad inode number: %lu", ino);
1083 inode = NULL; 1073 return ERR_PTR(-EIO);
1084 } else
1085 inode = iget(child->d_inode->i_sb, ino);
1086
1087 if (!inode)
1088 return ERR_PTR(-EACCES);
1089
1090 if (is_bad_inode(inode)) {
1091 iput(inode);
1092 return ERR_PTR(-ENOENT);
1093 } 1074 }
1094 1075
1076 inode = ext3_iget(child->d_inode->i_sb, ino);
1077 if (IS_ERR(inode))
1078 return ERR_CAST(inode);
1079
1095 parent = d_alloc_anon(inode); 1080 parent = d_alloc_anon(inode);
1096 if (!parent) { 1081 if (!parent) {
1097 iput(inode); 1082 iput(inode);