All of lore.kernel.org
 help / color / mirror / Atom feed
* broken CONFIG_COMPAT_VDSO on i386
@ 2007-02-12 15:06 Jan Beulich
  0 siblings, 0 replies; only message in thread
From: Jan Beulich @ 2007-02-12 15:06 UTC (permalink / raw)
  To: linux-kernel

After updating several machines to 2.6.20, I can't boot  anymore the single
one of them that supports the NX bit and is configured as a 32-bit system.

My understanding is that the VDSO changes in 2.6.20-rc7 were not fully
cooked, in that with that config option enabled VDSO_SYM(x) now equals
x, meaning that an address in the fixmap area is now being passed to
apps via AT_SYSINFO. However, the page is mapped with PAGE_READONLY
rather than PAGE_READONLY_EXEC.

I'm not certain whether having app code go through the fixmap area is
intended, but in case it is here is the simple patch that makes things work
again.

Signed-off-by: Jan Beulich <jbeulich@novell.com>

--- linux-2.6.20/arch/i386/kernel/sysenter.c	2007-02-04 19:44:54.000000000 +0100
+++ 2.6.20/arch/i386/kernel/sysenter.c	2007-02-12 16:01:29.000000000 +0100
@@ -77,7 +77,7 @@ int __init sysenter_setup(void)
 	syscall_page = (void *)get_zeroed_page(GFP_ATOMIC);
 
 #ifdef CONFIG_COMPAT_VDSO
-	__set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY);
+	__set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY_EXEC);
 	printk("Compat vDSO mapped to %08lx.\n", __fix_to_virt(FIX_VDSO));
 #endif
 



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-02-12 15:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-12 15:06 broken CONFIG_COMPAT_VDSO on i386 Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.