diff options
Diffstat (limited to 'fs/namei.c')
-rw-r--r-- | fs/namei.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/fs/namei.c b/fs/namei.c index 24896e833565..f1ef97dbc6c4 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -1121,11 +1121,13 @@ int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt, | |||
1121 | static struct dentry *__lookup_hash(struct qstr *name, | 1121 | static struct dentry *__lookup_hash(struct qstr *name, |
1122 | struct dentry *base, struct nameidata *nd) | 1122 | struct dentry *base, struct nameidata *nd) |
1123 | { | 1123 | { |
1124 | struct inode *inode = base->d_inode; | ||
1124 | struct dentry *dentry; | 1125 | struct dentry *dentry; |
1125 | struct inode *inode; | ||
1126 | int err; | 1126 | int err; |
1127 | 1127 | ||
1128 | inode = base->d_inode; | 1128 | err = exec_permission(inode); |
1129 | if (err) | ||
1130 | return ERR_PTR(err); | ||
1129 | 1131 | ||
1130 | /* | 1132 | /* |
1131 | * See if the low-level filesystem might want | 1133 | * See if the low-level filesystem might want |
@@ -1161,11 +1163,6 @@ out: | |||
1161 | */ | 1163 | */ |
1162 | static struct dentry *lookup_hash(struct nameidata *nd) | 1164 | static struct dentry *lookup_hash(struct nameidata *nd) |
1163 | { | 1165 | { |
1164 | int err; | ||
1165 | |||
1166 | err = exec_permission(nd->path.dentry->d_inode); | ||
1167 | if (err) | ||
1168 | return ERR_PTR(err); | ||
1169 | return __lookup_hash(&nd->last, nd->path.dentry, nd); | 1166 | return __lookup_hash(&nd->last, nd->path.dentry, nd); |
1170 | } | 1167 | } |
1171 | 1168 | ||
@@ -1213,9 +1210,6 @@ struct dentry *lookup_one_len(const char *name, struct dentry *base, int len) | |||
1213 | if (err) | 1210 | if (err) |
1214 | return ERR_PTR(err); | 1211 | return ERR_PTR(err); |
1215 | 1212 | ||
1216 | err = exec_permission(base->d_inode); | ||
1217 | if (err) | ||
1218 | return ERR_PTR(err); | ||
1219 | return __lookup_hash(&this, base, NULL); | 1213 | return __lookup_hash(&this, base, NULL); |
1220 | } | 1214 | } |
1221 | 1215 | ||