aboutsummaryrefslogtreecommitdiffstats
path: root/fs/efs/namei.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/efs/namei.c')
-rw-r--r--fs/efs/namei.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/fs/efs/namei.c b/fs/efs/namei.c
index f7f407075be1..e26704742d41 100644
--- a/fs/efs/namei.c
+++ b/fs/efs/namei.c
@@ -66,9 +66,10 @@ struct dentry *efs_lookup(struct inode *dir, struct dentry *dentry, struct namei
66 lock_kernel(); 66 lock_kernel();
67 inodenum = efs_find_entry(dir, dentry->d_name.name, dentry->d_name.len); 67 inodenum = efs_find_entry(dir, dentry->d_name.name, dentry->d_name.len);
68 if (inodenum) { 68 if (inodenum) {
69 if (!(inode = iget(dir->i_sb, inodenum))) { 69 inode = efs_iget(dir->i_sb, inodenum);
70 if (IS_ERR(inode)) {
70 unlock_kernel(); 71 unlock_kernel();
71 return ERR_PTR(-EACCES); 72 return ERR_CAST(inode);
72 } 73 }
73 } 74 }
74 unlock_kernel(); 75 unlock_kernel();
@@ -84,12 +85,11 @@ static struct inode *efs_nfs_get_inode(struct super_block *sb, u64 ino,
84 85
85 if (ino == 0) 86 if (ino == 0)
86 return ERR_PTR(-ESTALE); 87 return ERR_PTR(-ESTALE);
87 inode = iget(sb, ino); 88 inode = efs_iget(sb, ino);
88 if (inode == NULL) 89 if (IS_ERR(inode))
89 return ERR_PTR(-ENOMEM); 90 return ERR_CAST(inode);
90 91
91 if (is_bad_inode(inode) || 92 if (generation && inode->i_generation != generation) {
92 (generation && inode->i_generation != generation)) {
93 iput(inode); 93 iput(inode);
94 return ERR_PTR(-ESTALE); 94 return ERR_PTR(-ESTALE);
95 } 95 }
@@ -116,7 +116,7 @@ struct dentry *efs_get_parent(struct dentry *child)
116 struct dentry *parent; 116 struct dentry *parent;
117 struct inode *inode; 117 struct inode *inode;
118 efs_ino_t ino; 118 efs_ino_t ino;
119 int error; 119 long error;
120 120
121 lock_kernel(); 121 lock_kernel();
122 122
@@ -125,10 +125,11 @@ struct dentry *efs_get_parent(struct dentry *child)
125 if (!ino) 125 if (!ino)
126 goto fail; 126 goto fail;
127 127
128 error = -EACCES; 128 inode = efs_iget(child->d_inode->i_sb, ino);
129 inode = iget(child->d_inode->i_sb, ino); 129 if (IS_ERR(inode)) {
130 if (!inode) 130 error = PTR_ERR(inode);
131 goto fail; 131 goto fail;
132 }
132 133
133 error = -ENOMEM; 134 error = -ENOMEM;
134 parent = d_alloc_anon(inode); 135 parent = d_alloc_anon(inode);