From: Al Viro <[email protected]>

Signed-off-by: Al Viro <[email protected]>
---
 fs/compat.c    | 11 +++++------
 fs/internal.h  |  2 +-
 fs/namespace.c | 21 ++++++++++-----------
 3 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/fs/compat.c b/fs/compat.c
index c4708ae..254af5d 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -792,7 +792,7 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
                       const void __user *, data)
 {
        char *kernel_type;
-       unsigned long data_page;
+       void *data_page;
        char *kernel_dev;
        int retval;
 
@@ -814,18 +814,17 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, 
dev_name,
 
        if (kernel_type && data_page) {
                if (!strcmp(kernel_type, NCPFS_NAME)) {
-                       do_ncp_super_data_conv((void *)data_page);
+                       do_ncp_super_data_conv(data_page);
                } else if (!strcmp(kernel_type, NFS4_NAME)) {
-                       if (do_nfs4_super_data_conv((void *) data_page))
+                       if (do_nfs4_super_data_conv(data_page))
                                goto out3;
                }
        }
 
-       retval = do_mount(kernel_dev, dir_name, kernel_type,
-                       flags, (void*)data_page);
+       retval = do_mount(kernel_dev, dir_name, kernel_type, flags, data_page);
 
  out3:
-       free_page((void *)data_page);
+       free_page(data_page);
  out2:
        kfree(kernel_dev);
  out1:
diff --git a/fs/internal.h b/fs/internal.h
index 71859c4d..8e64f77 100644
--- a/fs/internal.h
+++ b/fs/internal.h
@@ -55,7 +55,7 @@ extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
 /*
  * namespace.c
  */
-extern int copy_mount_options(const void __user *, unsigned long *);
+extern int copy_mount_options(const void __user *, void **);
 extern char *copy_mount_string(const void __user *);
 
 extern struct vfsmount *lookup_mnt(struct path *);
diff --git a/fs/namespace.c b/fs/namespace.c
index 55df421..4bcae39 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -2601,17 +2601,17 @@ static long exact_copy_from_user(void *to, const void 
__user * from,
        return n;
 }
 
-int copy_mount_options(const void __user * data, unsigned long *where)
+int copy_mount_options(const void __user * data, void **where)
 {
        int i;
-       unsigned long page;
+       char *page;
        unsigned long size;
 
-       *where = 0;
+       *where = NULL;
        if (!data)
                return 0;
 
-       if (!(page = __get_free_page(GFP_KERNEL)))
+       if (!(page = (char *)__get_free_page(GFP_KERNEL)))
                return -ENOMEM;
 
        /* We only care that *some* data at the address the user
@@ -2623,13 +2623,13 @@ int copy_mount_options(const void __user * data, 
unsigned long *where)
        if (size > PAGE_SIZE)
                size = PAGE_SIZE;
 
-       i = size - exact_copy_from_user((void *)page, data, size);
+       i = size - exact_copy_from_user(page, data, size);
        if (!i) {
-               free_page((void *)page);
+               free_page(page);
                return -EFAULT;
        }
        if (i != PAGE_SIZE)
-               memset((char *)page + i, 0, PAGE_SIZE - i);
+               memset(page + i, 0, PAGE_SIZE - i);
        *where = page;
        return 0;
 }
@@ -2896,7 +2896,7 @@ SYSCALL_DEFINE5(mount, char __user *, dev_name, char 
__user *, dir_name,
        int ret;
        char *kernel_type;
        char *kernel_dev;
-       unsigned long data_page;
+       void *data_page;
 
        kernel_type = copy_mount_string(type);
        ret = PTR_ERR(kernel_type);
@@ -2912,10 +2912,9 @@ SYSCALL_DEFINE5(mount, char __user *, dev_name, char 
__user *, dir_name,
        if (ret < 0)
                goto out_data;
 
-       ret = do_mount(kernel_dev, dir_name, kernel_type, flags,
-               (void *) data_page);
+       ret = do_mount(kernel_dev, dir_name, kernel_type, flags, data_page);
 
-       free_page((void *)data_page);
+       free_page(data_page);
 out_data:
        kfree(kernel_dev);
 out_dev:
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to