diff options
Diffstat (limited to 'fs/ext3/namei.c')
-rw-r--r-- | fs/ext3/namei.c | 33 |
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); |