OSDN Git Service

get rid of cred argument of vfs_open() and do_dentry_open()
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 10 Jul 2018 17:22:28 +0000 (13:22 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 12 Jul 2018 14:04:14 +0000 (10:04 -0400)
always equal to ->f_cred

Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/internal.h
fs/namei.c
fs/open.c

index 661c314..baeab53 100644 (file)
@@ -126,7 +126,7 @@ int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
                int flag);
 
 extern int open_check_o_direct(struct file *f);
-extern int vfs_open(const struct path *, struct file *, const struct cred *);
+extern int vfs_open(const struct path *, struct file *);
 
 /*
  * inode.c
index 223925e..3cf0280 100644 (file)
@@ -3396,7 +3396,7 @@ finish_open_created:
        if (error)
                goto out;
        BUG_ON(*opened & FILE_OPENED); /* once it's opened, it's opened */
-       error = vfs_open(&nd->path, file, current_cred());
+       error = vfs_open(&nd->path, file);
        if (error)
                goto out;
        *opened |= FILE_OPENED;
@@ -3499,7 +3499,7 @@ static int do_o_path(struct nameidata *nd, unsigned flags, struct file *file)
        int error = path_lookupat(nd, flags, &path);
        if (!error) {
                audit_inode(nd->name, path.dentry, 0);
-               error = vfs_open(&path, file, current_cred());
+               error = vfs_open(&path, file);
                path_put(&path);
        }
        return error;
index 15d2c3a..0a9f00b 100644 (file)
--- a/fs/open.c
+++ b/fs/open.c
@@ -736,8 +736,7 @@ int open_check_o_direct(struct file *f)
 
 static int do_dentry_open(struct file *f,
                          struct inode *inode,
-                         int (*open)(struct inode *, struct file *),
-                         const struct cred *cred)
+                         int (*open)(struct inode *, struct file *))
 {
        static const struct file_operations empty_fops = {};
        int error;
@@ -777,7 +776,7 @@ static int do_dentry_open(struct file *f,
                goto cleanup_all;
        }
 
-       error = security_file_open(f, cred);
+       error = security_file_open(f, f->f_cred);
        if (error)
                goto cleanup_all;
 
@@ -855,8 +854,7 @@ int finish_open(struct file *file, struct dentry *dentry,
        BUG_ON(*opened & FILE_OPENED); /* once it's opened, it's opened */
 
        file->f_path.dentry = dentry;
-       error = do_dentry_open(file, d_backing_inode(dentry), open,
-                              current_cred());
+       error = do_dentry_open(file, d_backing_inode(dentry), open);
        if (!error)
                *opened |= FILE_OPENED;
 
@@ -897,8 +895,7 @@ EXPORT_SYMBOL(file_path);
  * @file: newly allocated file with f_flag initialized
  * @cred: credentials to use
  */
-int vfs_open(const struct path *path, struct file *file,
-            const struct cred *cred)
+int vfs_open(const struct path *path, struct file *file)
 {
        struct dentry *dentry = d_real(path->dentry, NULL, file->f_flags, 0);
 
@@ -906,7 +903,7 @@ int vfs_open(const struct path *path, struct file *file,
                return PTR_ERR(dentry);
 
        file->f_path = *path;
-       return do_dentry_open(file, d_backing_inode(dentry), NULL, cred);
+       return do_dentry_open(file, d_backing_inode(dentry), NULL);
 }
 
 struct file *dentry_open(const struct path *path, int flags,
@@ -922,7 +919,7 @@ struct file *dentry_open(const struct path *path, int flags,
 
        f = alloc_empty_file(flags, cred);
        if (!IS_ERR(f)) {
-               error = vfs_open(path, f, cred);
+               error = vfs_open(path, f);
                if (!error) {
                        /* from now on we need fput() to dispose of f */
                        error = open_check_o_direct(f);