Make open_exec() and sys_uselib() use may_open(), instead of duplicating its parts
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 6 Apr 2009 13:38:49 +0000 (09:38 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 9 May 2009 14:49:42 +0000 (10:49 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/exec.c

index 639177b0eeac9bc74ccaca2c1b2f6296f7b0f23d..41ae8e0de72d71e8957f9a7ecff8d5d55004ac42 100644 (file)
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -126,11 +126,7 @@ SYSCALL_DEFINE1(uselib, const char __user *, library)
        if (nd.path.mnt->mnt_flags & MNT_NOEXEC)
                goto exit;
 
-       error = inode_permission(nd.path.dentry->d_inode,
-                                MAY_READ | MAY_EXEC | MAY_OPEN);
-       if (error)
-               goto exit;
-       error = ima_path_check(&nd.path, MAY_READ | MAY_EXEC | MAY_OPEN);
+       error = may_open(&nd.path, MAY_READ | MAY_EXEC | MAY_OPEN, 0);
        if (error)
                goto exit;
 
@@ -677,10 +673,7 @@ struct file *open_exec(const char *name)
        if (nd.path.mnt->mnt_flags & MNT_NOEXEC)
                goto out_path_put;
 
-       err = inode_permission(nd.path.dentry->d_inode, MAY_EXEC | MAY_OPEN);
-       if (err)
-               goto out_path_put;
-       err = ima_path_check(&nd.path, MAY_EXEC | MAY_OPEN);
+       err = may_open(&nd.path, MAY_EXEC | MAY_OPEN, 0);
        if (err)
                goto out_path_put;