vfs: make path_openat take a struct filename pointer

...and fix up the callers. For do_file_open_root, just declare a
struct filename on the stack and fill out the .name field. For
do_filp_open, make it also take a struct filename pointer, and fix up its
callers to call it appropriately.

For filp_open, add a variant that takes a struct filename pointer and turn
filp_open into a wrapper around it.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Jeff Layton 2012-10-10 16:43:10 -04:00 committed by Al Viro
parent 873f1eedc1
commit 669abf4e55
7 changed files with 42 additions and 21 deletions

View file

@ -193,7 +193,7 @@ static void acct_file_reopen(struct bsd_acct_struct *acct, struct file *file,
}
}
static int acct_on(const char *name)
static int acct_on(struct filename *pathname)
{
struct file *file;
struct vfsmount *mnt;
@ -201,7 +201,7 @@ static int acct_on(const char *name)
struct bsd_acct_struct *acct = NULL;
/* Difference from BSD - they don't do O_APPEND */
file = filp_open(name, O_WRONLY|O_APPEND|O_LARGEFILE, 0);
file = file_open_name(pathname, O_WRONLY|O_APPEND|O_LARGEFILE, 0);
if (IS_ERR(file))
return PTR_ERR(file);
@ -263,7 +263,7 @@ SYSCALL_DEFINE1(acct, const char __user *, name)
struct filename *tmp = getname(name);
if (IS_ERR(tmp))
return (PTR_ERR(tmp));
error = acct_on(tmp->name);
error = acct_on(tmp);
putname(tmp);
} else {
struct bsd_acct_struct *acct;