From: David S. Miller Date: Fri, 5 Mar 2004 06:45:42 +0000 (-0800) Subject: [SPARC]: Pass a real page into do_mount() a final arg. X-Git-Tag: v2.6.4-rc3~34 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=a53bc753b04327e0177f387fb8da8d26d4b88144;p=history.git [SPARC]: Pass a real page into do_mount() a final arg. --- diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c index 31cf31c44dd1..001f15d9b7a6 100644 --- a/arch/sparc/kernel/sys_sunos.c +++ b/arch/sparc/kernel/sys_sunos.c @@ -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 diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c index 6cb13029b2dc..89ce8ba532e9 100644 --- a/arch/sparc64/kernel/sys_sunos32.c +++ b/arch/sparc64/kernel/sys_sunos32.c @@ -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 */