Messages in this thread Patch in this message | | | Date | Wed, 23 Apr 2008 02:18:49 +0200 | From | Henry Nestler <> | Subject | Re: [PATCH] x86: endless page faults in mount_block_root for Linux 2.6 |
| |
An other fix would be to copy the "fs_names+offset" into a new page and give a page alignment buffer to do_mount_root. I feel it is better to fix the fault handler for all failed addresses, not only the mount?
--- linux-2.6.25/init/do_mounts.c +++ linux-2.6.25/init/do_mounts.c @@ -204,6 +204,7 @@ void __init mount_block_root(char *name, int flags) { char *fs_names = __getname(); + char *fs_type = __getname(); char *p; #ifdef CONFIG_BLOCK char b[BDEVNAME_SIZE]; @@ -214,7 +215,12 @@ get_fs_names(fs_names); retry: for (p = fs_names; *p; p += strlen(p)+1) { - int err = do_mount_root(name, p, flags, root_mount_data); + int err; + + /* fs_type must size >= PAGE_SIZE or in user space */ + strcpy(fs_type, p); + + err = do_mount_root(name, fs_type, flags, root_mount_data); switch (err) { case 0: goto out; @@ -251,6 +257,7 @@ #endif panic("VFS: Unable to mount root fs on %s", b); out: + putname(fs_type); putname(fs_names); }
-- Henry N.
| |