]> git.neil.brown.name Git - history.git/commitdiff
[SPARC]: Pass a real page into do_mount() a final arg.
authorDavid S. Miller <davem@nuts.davemloft.net>
Fri, 5 Mar 2004 06:45:42 +0000 (22:45 -0800)
committerDavid S. Miller <davem@nuts.davemloft.net>
Fri, 5 Mar 2004 06:45:42 +0000 (22:45 -0800)
arch/sparc/kernel/sys_sunos.c
arch/sparc64/kernel/sys_sunos32.c

index 31cf31c44dd1a6704f6e397d33480e5c0d9da075..001f15d9b7a635cd59306420ddb7a0c52b66f3d9 100644 (file)
@@ -682,8 +682,8 @@ static int get_default (int value, int def_value)
 
 static int sunos_nfs_mount(char *dir_name, int linux_flags, void *data)
 {
-       int  server_fd;
-       char *the_name;
+       int  server_fd, err;
+       char *the_name, *mount_page;
        struct nfs_mount_data linux_nfs_mount;
        struct sunos_nfs_mount_args sunos_mount;
 
@@ -736,7 +736,16 @@ static int sunos_nfs_mount(char *dir_name, int linux_flags, void *data)
                sizeof(linux_nfs_mount.hostname));
        putname (the_name);
        
-       return do_mount ("", dir_name, "nfs", linux_flags, &linux_nfs_mount);
+       mount_page = (char *) get_zeroed_page(GFP_KERNEL);
+       if (!mount_page)
+               return -ENOMEM;
+
+       memcpy(mount_page, &linux_nfs_mount, sizeof(linux_nfs_mount));
+
+       err = do_mount("", dir_name, "nfs", linux_flags, mount_page);
+
+       free_page((unsigned long) mount_page);
+       return err;
 }
 
 asmlinkage int
index 6cb13029b2dc2710da737d2fcc196fcc765d8cf7..89ce8ba532e901c64a07d67aa2ddbe5033ffe66a 100644 (file)
@@ -650,8 +650,8 @@ static int get_default (int value, int def_value)
 /* XXXXXXXXXXXXXXXXXXXX */
 static int sunos_nfs_mount(char *dir_name, int linux_flags, void *data)
 {
-       int  server_fd;
-       char *the_name;
+       int  server_fd, err;
+       char *the_name, *mount_page;
        struct nfs_mount_data linux_nfs_mount;
        struct sunos_nfs_mount_args sunos_mount;
 
@@ -704,7 +704,16 @@ static int sunos_nfs_mount(char *dir_name, int linux_flags, void *data)
                sizeof(linux_nfs_mount.hostname));
        putname (the_name);
        
-       return do_mount ("", dir_name, "nfs", linux_flags, &linux_nfs_mount);
+       mount_page = (char *) get_zeroed_page(GFP_KERNEL);
+       if (!mount_page)
+               return -ENOMEM;
+
+       memcpy(mount_page, &linux_nfs_mount, sizeof(linux_nfs_mount));
+
+       err = do_mount("", dir_name, "nfs", linux_flags, mount_page);
+
+       free_page((unsigned long) mount_page);
+       return err;
 }
 
 /* XXXXXXXXXXXXXXXXXXXX */