Commit ae2bb293 authored by Al Viro's avatar Al Viro

get rid of cred argument of vfs_open() and do_dentry_open()

always equal to ->f_cred
Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent ea73ea72
...@@ -126,7 +126,7 @@ int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group, ...@@ -126,7 +126,7 @@ int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
int flag); int flag);
extern int open_check_o_direct(struct file *f); 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 * inode.c
......
...@@ -3396,7 +3396,7 @@ static int do_last(struct nameidata *nd, ...@@ -3396,7 +3396,7 @@ static int do_last(struct nameidata *nd,
if (error) if (error)
goto out; goto out;
BUG_ON(*opened & FILE_OPENED); /* once it's opened, it's opened */ 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) if (error)
goto out; goto out;
*opened |= FILE_OPENED; *opened |= FILE_OPENED;
...@@ -3499,7 +3499,7 @@ static int do_o_path(struct nameidata *nd, unsigned flags, struct file *file) ...@@ -3499,7 +3499,7 @@ static int do_o_path(struct nameidata *nd, unsigned flags, struct file *file)
int error = path_lookupat(nd, flags, &path); int error = path_lookupat(nd, flags, &path);
if (!error) { if (!error) {
audit_inode(nd->name, path.dentry, 0); audit_inode(nd->name, path.dentry, 0);
error = vfs_open(&path, file, current_cred()); error = vfs_open(&path, file);
path_put(&path); path_put(&path);
} }
return error; return error;
......
...@@ -736,8 +736,7 @@ int open_check_o_direct(struct file *f) ...@@ -736,8 +736,7 @@ int open_check_o_direct(struct file *f)
static int do_dentry_open(struct file *f, static int do_dentry_open(struct file *f,
struct inode *inode, struct inode *inode,
int (*open)(struct inode *, struct file *), int (*open)(struct inode *, struct file *))
const struct cred *cred)
{ {
static const struct file_operations empty_fops = {}; static const struct file_operations empty_fops = {};
int error; int error;
...@@ -777,7 +776,7 @@ static int do_dentry_open(struct file *f, ...@@ -777,7 +776,7 @@ static int do_dentry_open(struct file *f,
goto cleanup_all; goto cleanup_all;
} }
error = security_file_open(f, cred); error = security_file_open(f, f->f_cred);
if (error) if (error)
goto cleanup_all; goto cleanup_all;
...@@ -855,8 +854,7 @@ int finish_open(struct file *file, struct dentry *dentry, ...@@ -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 */ BUG_ON(*opened & FILE_OPENED); /* once it's opened, it's opened */
file->f_path.dentry = dentry; file->f_path.dentry = dentry;
error = do_dentry_open(file, d_backing_inode(dentry), open, error = do_dentry_open(file, d_backing_inode(dentry), open);
current_cred());
if (!error) if (!error)
*opened |= FILE_OPENED; *opened |= FILE_OPENED;
...@@ -897,8 +895,7 @@ EXPORT_SYMBOL(file_path); ...@@ -897,8 +895,7 @@ EXPORT_SYMBOL(file_path);
* @file: newly allocated file with f_flag initialized * @file: newly allocated file with f_flag initialized
* @cred: credentials to use * @cred: credentials to use
*/ */
int vfs_open(const struct path *path, struct file *file, int vfs_open(const struct path *path, struct file *file)
const struct cred *cred)
{ {
struct dentry *dentry = d_real(path->dentry, NULL, file->f_flags, 0); 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, ...@@ -906,7 +903,7 @@ int vfs_open(const struct path *path, struct file *file,
return PTR_ERR(dentry); return PTR_ERR(dentry);
file->f_path = *path; 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, struct file *dentry_open(const struct path *path, int flags,
...@@ -922,7 +919,7 @@ 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); f = alloc_empty_file(flags, cred);
if (!IS_ERR(f)) { if (!IS_ERR(f)) {
error = vfs_open(path, f, cred); error = vfs_open(path, f);
if (!error) { if (!error) {
/* from now on we need fput() to dispose of f */ /* from now on we need fput() to dispose of f */
error = open_check_o_direct(f); error = open_check_o_direct(f);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment