vfs: move getname() from callers to do_mount()
It would make more sense to pass char __user * instead of char * in callers of do_mount() and do getname() inside do_mount(). Suggested-by: Al Viro <viro@ZenIV.linux.org.uk> Signed-off-by: Seunghun Lee <waydi1@gmail.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -446,7 +446,8 @@ struct procfs_args {
|
||||
* unhappy with OSF UFS. [CHECKME]
|
||||
*/
|
||||
static int
|
||||
osf_ufs_mount(const char *dirname, struct ufs_args __user *args, int flags)
|
||||
osf_ufs_mount(const char __user *dirname,
|
||||
struct ufs_args __user *args, int flags)
|
||||
{
|
||||
int retval;
|
||||
struct cdfs_args tmp;
|
||||
@@ -466,7 +467,8 @@ osf_ufs_mount(const char *dirname, struct ufs_args __user *args, int flags)
|
||||
}
|
||||
|
||||
static int
|
||||
osf_cdfs_mount(const char *dirname, struct cdfs_args __user *args, int flags)
|
||||
osf_cdfs_mount(const char __user *dirname,
|
||||
struct cdfs_args __user *args, int flags)
|
||||
{
|
||||
int retval;
|
||||
struct cdfs_args tmp;
|
||||
@@ -486,7 +488,8 @@ osf_cdfs_mount(const char *dirname, struct cdfs_args __user *args, int flags)
|
||||
}
|
||||
|
||||
static int
|
||||
osf_procfs_mount(const char *dirname, struct procfs_args __user *args, int flags)
|
||||
osf_procfs_mount(const char __user *dirname,
|
||||
struct procfs_args __user *args, int flags)
|
||||
{
|
||||
struct procfs_args tmp;
|
||||
|
||||
@@ -500,28 +503,22 @@ SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path,
|
||||
int, flag, void __user *, data)
|
||||
{
|
||||
int retval;
|
||||
struct filename *name;
|
||||
|
||||
name = getname(path);
|
||||
retval = PTR_ERR(name);
|
||||
if (IS_ERR(name))
|
||||
goto out;
|
||||
switch (typenr) {
|
||||
case 1:
|
||||
retval = osf_ufs_mount(name->name, data, flag);
|
||||
retval = osf_ufs_mount(path, data, flag);
|
||||
break;
|
||||
case 6:
|
||||
retval = osf_cdfs_mount(name->name, data, flag);
|
||||
retval = osf_cdfs_mount(path, data, flag);
|
||||
break;
|
||||
case 9:
|
||||
retval = osf_procfs_mount(name->name, data, flag);
|
||||
retval = osf_procfs_mount(path, data, flag);
|
||||
break;
|
||||
default:
|
||||
retval = -EINVAL;
|
||||
printk("osf_mount(%ld, %x)\n", typenr, flag);
|
||||
}
|
||||
putname(name);
|
||||
out:
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
مرجع در شماره جدید
Block a user