|
@@ -1121,11 +1121,13 @@ int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt,
|
|
|
static struct dentry *__lookup_hash(struct qstr *name,
|
|
|
struct dentry *base, struct nameidata *nd)
|
|
|
{
|
|
|
+ struct inode *inode = base->d_inode;
|
|
|
struct dentry *dentry;
|
|
|
- struct inode *inode;
|
|
|
int err;
|
|
|
|
|
|
- inode = base->d_inode;
|
|
|
+ err = exec_permission(inode);
|
|
|
+ if (err)
|
|
|
+ return ERR_PTR(err);
|
|
|
|
|
|
/*
|
|
|
* See if the low-level filesystem might want
|
|
@@ -1161,11 +1163,6 @@ out:
|
|
|
*/
|
|
|
static struct dentry *lookup_hash(struct nameidata *nd)
|
|
|
{
|
|
|
- int err;
|
|
|
-
|
|
|
- err = exec_permission(nd->path.dentry->d_inode);
|
|
|
- if (err)
|
|
|
- return ERR_PTR(err);
|
|
|
return __lookup_hash(&nd->last, nd->path.dentry, nd);
|
|
|
}
|
|
|
|
|
@@ -1213,9 +1210,6 @@ struct dentry *lookup_one_len(const char *name, struct dentry *base, int len)
|
|
|
if (err)
|
|
|
return ERR_PTR(err);
|
|
|
|
|
|
- err = exec_permission(base->d_inode);
|
|
|
- if (err)
|
|
|
- return ERR_PTR(err);
|
|
|
return __lookup_hash(&this, base, NULL);
|
|
|
}
|
|
|
|