mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 08:24:42 +01:00
47 lines
1.2 KiB
Diff
47 lines
1.2 KiB
Diff
From: Andreas Gruenbacher <agruen@suse.de>
|
|
Subject: Switch to vfs_permission() in do_path_lookup()
|
|
|
|
Switch from file_permission() to vfs_permission() in do_path_lookup():
|
|
this avoids calling permission() with a NULL nameidata here.
|
|
|
|
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
|
|
Signed-off-by: John Johansen <jjohansen@suse.de>
|
|
|
|
---
|
|
fs/namei.c | 13 ++++++-------
|
|
1 file changed, 6 insertions(+), 7 deletions(-)
|
|
|
|
--- a/fs/namei.c
|
|
+++ b/fs/namei.c
|
|
@@ -1147,25 +1147,24 @@ static int fastcall do_path_lookup(int d
|
|
nd->dentry = dget(fs->pwd);
|
|
read_unlock(&fs->lock);
|
|
} else {
|
|
- struct dentry *dentry;
|
|
-
|
|
file = fget_light(dfd, &fput_needed);
|
|
retval = -EBADF;
|
|
if (!file)
|
|
goto out_fail;
|
|
|
|
- dentry = file->f_path.dentry;
|
|
+ nd->dentry = file->f_path.dentry;
|
|
+ nd->mnt = file->f_path.mnt;
|
|
|
|
retval = -ENOTDIR;
|
|
- if (!S_ISDIR(dentry->d_inode->i_mode))
|
|
+ if (!S_ISDIR(nd->dentry->d_inode->i_mode))
|
|
goto fput_fail;
|
|
|
|
- retval = file_permission(file, MAY_EXEC);
|
|
+ retval = vfs_permission(nd, MAY_EXEC);
|
|
if (retval)
|
|
goto fput_fail;
|
|
|
|
- nd->mnt = mntget(file->f_path.mnt);
|
|
- nd->dentry = dget(dentry);
|
|
+ mntget(nd->mnt);
|
|
+ dget(nd->dentry);
|
|
|
|
fput_light(file, fput_needed);
|
|
}
|