This is a note to let you know that we have just queued up the patch titled

     Subject: UML - host VDSO fix

to the 2.6.20-stable tree.  Its filename is

     uml-host-vdso-fix.patch

A git repo of this tree can be found at 
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary


>From [EMAIL PROTECTED] Fri Mar 23 12:41:21 2007
From: Jeff Dike <[EMAIL PROTECTED]>
Date: Fri, 23 Mar 2007 15:37:30 -0400
Subject: UML - host VDSO fix
To: [EMAIL PROTECTED]
Cc: uml-devel <user-mode-linux-devel@lists.sourceforge.net>
Message-ID: <[EMAIL PROTECTED]>
Content-Disposition: inline

From: Jeff Dike <[EMAIL PROTECTED]>

This fixes a problem seen by a number of people running UML on newer host
kernels.  init would hang with an infinite segfault loop.

It turns out that the host kernel was providing a AT_SYSINFO_EHDR of
0xffffe000, which faked UML into believing that the host VDSO page could be
reused.  However, AT_SYSINFO pointed into the middle of the address space, and
was unmapped as a result.  Because UML was providing AT_SYSINFO_EHDR and
AT_SYSINFO to its own processes, these would branch to nowhere when trying to
use the VDSO.

The fix is to also check the location of AT_SYSINFO when deciding whether to
use the host's VDSO.

Signed-off-by: Jeff Dike <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

--- linux-2.6.17.orig/arch/um/os-Linux/elf_aux.c        2007-02-23 
15:00:51.000000000 -0500
+++ linux-2.6.17/arch/um/os-Linux/elf_aux.c     2007-02-23 15:09:58.000000000 
-0500
@@ -39,6 +39,9 @@ __init void scan_elf_aux( char **envp)
                switch ( auxv->a_type ) {
                        case AT_SYSINFO:
                                __kernel_vsyscall = auxv->a_un.a_val;
+                               /* See if the page is under TASK_SIZE */
+                               if (__kernel_vsyscall < (unsigned long) envp)
+                                       __kernel_vsyscall = 0;
                                break;
                        case AT_SYSINFO_EHDR:
                                vsyscall_ehdr = auxv->a_un.a_val;

_______________________________________________
stable mailing list
[EMAIL PROTECTED]
http://linux.kernel.org/mailman/listinfo/stable


Patches currently in stable-queue which might be from [EMAIL PROTECTED] are


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to