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:
Seunghun Lee
2014-09-14 22:15:10 +09:00
committed by Al Viro
parent 4d93bc3e81
commit 5e6123f347
4 changed files with 21 additions and 44 deletions

View File

@@ -794,7 +794,6 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
char *kernel_type;
unsigned long data_page;
char *kernel_dev;
struct filename *dir;
int retval;
kernel_type = copy_mount_string(type);
@@ -802,19 +801,14 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
if (IS_ERR(kernel_type))
goto out;
dir = getname(dir_name);
retval = PTR_ERR(dir);
if (IS_ERR(dir))
goto out1;
kernel_dev = copy_mount_string(dev_name);
retval = PTR_ERR(kernel_dev);
if (IS_ERR(kernel_dev))
goto out2;
goto out1;
retval = copy_mount_options(data, &data_page);
if (retval < 0)
goto out3;
goto out2;
retval = -EINVAL;
@@ -823,19 +817,17 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
do_ncp_super_data_conv((void *)data_page);
} else if (!strcmp(kernel_type, NFS4_NAME)) {
if (do_nfs4_super_data_conv((void *) data_page))
goto out4;
goto out3;
}
}
retval = do_mount(kernel_dev, dir->name, kernel_type,
retval = do_mount(kernel_dev, dir_name, kernel_type,
flags, (void*)data_page);
out4:
free_page(data_page);
out3:
kfree(kernel_dev);
free_page(data_page);
out2:
putname(dir);
kfree(kernel_dev);
out1:
kfree(kernel_type);
out: