summaryrefslogtreecommitdiffstats
path: root/fs/compat.c
diff options
context:
space:
mode:
authorSeunghun Lee <waydi1@gmail.com>2014-09-14 09:15:10 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2014-10-09 02:39:16 -0400
commit5e6123f3477e4260fb14392f0a88f1a842fa4d42 (patch)
tree66cf4572317d0e634f169cbdc702e773fe0e4b5c /fs/compat.c
parent4d93bc3e81736ce55c79d9cae743bab4f89b4f9c (diff)
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>
Diffstat (limited to 'fs/compat.c')
-rw-r--r--fs/compat.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/fs/compat.c b/fs/compat.c
index 6205c247a6e3..b13df99f3534 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -794,7 +794,6 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
794 char *kernel_type; 794 char *kernel_type;
795 unsigned long data_page; 795 unsigned long data_page;
796 char *kernel_dev; 796 char *kernel_dev;
797 struct filename *dir;
798 int retval; 797 int retval;
799 798
800 kernel_type = copy_mount_string(type); 799 kernel_type = copy_mount_string(type);
@@ -802,19 +801,14 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
802 if (IS_ERR(kernel_type)) 801 if (IS_ERR(kernel_type))
803 goto out; 802 goto out;
804 803
805 dir = getname(dir_name);
806 retval = PTR_ERR(dir);
807 if (IS_ERR(dir))
808 goto out1;
809
810 kernel_dev = copy_mount_string(dev_name); 804 kernel_dev = copy_mount_string(dev_name);
811 retval = PTR_ERR(kernel_dev); 805 retval = PTR_ERR(kernel_dev);
812 if (IS_ERR(kernel_dev)) 806 if (IS_ERR(kernel_dev))
813 goto out2; 807 goto out1;
814 808
815 retval = copy_mount_options(data, &data_page); 809 retval = copy_mount_options(data, &data_page);
816 if (retval < 0) 810 if (retval < 0)
817 goto out3; 811 goto out2;
818 812
819 retval = -EINVAL; 813 retval = -EINVAL;
820 814
@@ -823,19 +817,17 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
823 do_ncp_super_data_conv((void *)data_page); 817 do_ncp_super_data_conv((void *)data_page);
824 } else if (!strcmp(kernel_type, NFS4_NAME)) { 818 } else if (!strcmp(kernel_type, NFS4_NAME)) {
825 if (do_nfs4_super_data_conv((void *) data_page)) 819 if (do_nfs4_super_data_conv((void *) data_page))
826 goto out4; 820 goto out3;
827 } 821 }
828 } 822 }
829 823
830 retval = do_mount(kernel_dev, dir->name, kernel_type, 824 retval = do_mount(kernel_dev, dir_name, kernel_type,
831 flags, (void*)data_page); 825 flags, (void*)data_page);
832 826
833 out4:
834 free_page(data_page);
835 out3: 827 out3:
836 kfree(kernel_dev); 828 free_page(data_page);
837 out2: 829 out2:
838 putname(dir); 830 kfree(kernel_dev);
839 out1: 831 out1:
840 kfree(kernel_type); 832 kfree(kernel_type);
841 out: 833 out: