linux-um archives
 help / color / mirror / Atom feed
* [uml-devel] [PATCH] UML - host VDSO fix
@ 2007-03-23 19:37 Jeff Dike
  2007-03-23 21:05 ` Brock, Anthony - NET
  2007-03-30 20:18 ` [uml-devel] patch uml-host-vdso-fix.patch queued to -stable tree gregkh
  0 siblings, 2 replies; 5+ messages in thread
From: Jeff Dike @ 2007-03-23 19:37 UTC (permalink / raw)
  To: stable; +Cc: LKML, uml-devel

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 <jdike@linux.intel.com>
--
 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
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [uml-devel] [PATCH] UML - host VDSO fix
  2007-03-23 19:37 [uml-devel] [PATCH] UML - host VDSO fix Jeff Dike
@ 2007-03-23 21:05 ` Brock, Anthony - NET
  2007-03-23 21:20   ` Jeff Dike
  2007-03-23 21:24   ` Jeff Dike
  2007-03-30 20:18 ` [uml-devel] patch uml-host-vdso-fix.patch queued to -stable tree gregkh
  1 sibling, 2 replies; 5+ messages in thread
From: Brock, Anthony - NET @ 2007-03-23 21:05 UTC (permalink / raw)
  To: Jeff Dike; +Cc: uml-devel

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: user-mode-linux-devel-bounces@lists.sourceforge.net 
> [mailto:user-mode-linux-devel-bounces@lists.sourceforge.net] 
> On Behalf Of Jeff Dike
> Sent: Friday, March 23, 2007 12:38 PM
> To: stable@kernel.org
> 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 <jdike@linux.intel.com>
> --
>  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
> User-mode-linux-devel@lists.sourceforge.net
> 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
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [uml-devel] [PATCH] UML - host VDSO fix
  2007-03-23 21:05 ` Brock, Anthony - NET
@ 2007-03-23 21:20   ` Jeff Dike
  2007-03-23 21:24   ` Jeff Dike
  1 sibling, 0 replies; 5+ messages in thread
From: Jeff Dike @ 2007-03-23 21:20 UTC (permalink / raw)
  To: Brock, Anthony - NET; +Cc: uml-devel

On Fri, Mar 23, 2007 at 02:05:42PM -0700, Brock, Anthony - NET wrote:
> Is this going into stable or devel? If stable, what version? Also, do
> you know what version of the host kernels introduced this behavior?

It's in mainline (2.6.21-rc4 now).  The mail that you're replying to
hopefully will get the fix into 2.6.20.4.

> 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!

I believe so too, but more confirmation is always welcome.

				Jeff

-- 
Work email - jdike at linux dot intel dot com

-------------------------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [uml-devel] [PATCH] UML - host VDSO fix
  2007-03-23 21:05 ` Brock, Anthony - NET
  2007-03-23 21:20   ` Jeff Dike
@ 2007-03-23 21:24   ` Jeff Dike
  1 sibling, 0 replies; 5+ messages in thread
From: Jeff Dike @ 2007-03-23 21:24 UTC (permalink / raw)
  To: Brock, Anthony - NET; +Cc: uml-devel

On Fri, Mar 23, 2007 at 02:05:42PM -0700, Brock, Anthony - NET wrote:
> Is this going into stable or devel? If stable, what version?

I said 2.6.20.4, which just came out, so I guess this will wait until
2.6.20.5.

				Jeff

-- 
Work email - jdike at linux dot intel dot com

-------------------------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [uml-devel] patch uml-host-vdso-fix.patch queued to -stable tree
  2007-03-23 19:37 [uml-devel] [PATCH] UML - host VDSO fix Jeff Dike
  2007-03-23 21:05 ` Brock, Anthony - NET
@ 2007-03-30 20:18 ` gregkh
  1 sibling, 0 replies; 5+ messages in thread
From: gregkh @ 2007-03-30 20:18 UTC (permalink / raw)
  To: jdike, gregkh, jdike, user-mode-linux-devel; +Cc: stable


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 stable-bounces@linux.kernel.org Fri Mar 23 12:41:21 2007
From: Jeff Dike <jdike@addtoit.com>
Date: Fri, 23 Mar 2007 15:37:30 -0400
Subject: UML - host VDSO fix
To: stable@kernel.org
Cc: uml-devel <user-mode-linux-devel@lists.sourceforge.net>
Message-ID: <20070323193730.GA9519@c2.user-mode-linux.org>
Content-Disposition: inline

From: Jeff Dike <jdike@addtoit.com>

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 <jdike@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

--- 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
stable@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/stable


Patches currently in stable-queue which might be from jdike@addtoit.com 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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-03-30 20:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-23 19:37 [uml-devel] [PATCH] UML - host VDSO fix Jeff Dike
2007-03-23 21:05 ` Brock, Anthony - NET
2007-03-23 21:20   ` Jeff Dike
2007-03-23 21:24   ` Jeff Dike
2007-03-30 20:18 ` [uml-devel] patch uml-host-vdso-fix.patch queued to -stable tree gregkh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox