Messages in this thread Patch in this message | | | Date | Wed, 07 Mar 2007 09:11:18 -0800 | From | Greg KH <> | Subject | [patch 043/101] i386: Fix broken CONFIG_COMPAT_VDSO on i386 |
| |
From: "Jan Beulich" <jbeulich@novell.com>
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.
Cc: Theodore Tso <tytso@mit.edu> Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- arch/i386/kernel/sysenter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/arch/i386/kernel/sysenter.c +++ linux-2.6.20.1/arch/i386/kernel/sysenter.c @@ -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 -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |