mirror of https://gitee.com/openkylin/linux.git
get rid of cred argument of vfs_open() and do_dentry_open()
always equal to ->f_cred Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
ea73ea7279
commit
ae2bb293a3
|
@ -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
|
||||
|
|
|
@ -3396,7 +3396,7 @@ static int do_last(struct nameidata *nd,
|
|||
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;
|
||||
|
|
15
fs/open.c
15
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);
|
||||
|
|
Loading…
Reference in New Issue