Jeff,

Is this going into stable or devel? If stable, what version? Also, do
you know what version of the host kernels introduced this behavior?

Sorry for all the questions, but I believe this is the bug I've been
waiting on for a while (affecting host kernels greater than 2.6.17, or
something of that nature). Thanks!

Tony


> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] 
> On Behalf Of Jeff Dike
> Sent: Friday, March 23, 2007 12:38 PM
> To: [EMAIL PROTECTED]
> Cc: LKML; uml-devel
> Subject: [uml-devel] [PATCH] UML - host VDSO fix
> 
> 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]>
> --
>  arch/um/os-Linux/elf_aux.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> Index: linux-2.6.17/arch/um/os-Linux/elf_aux.c
> ===================================================================
> --- 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;
> 
> --------------------------------------------------------------
> -----------
> 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
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
> 

-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to