search for: vsyscall_sysenter_start

Displaying 17 results from an estimated 17 matches for "vsyscall_sysenter_start".

2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- linux-2.6.21.orig/arch/i386/kernel/sysenter.c 2007-03-06 18:51:34.00000= 0000 -0800 +++ linux-2.6.21/arch/i386/kernel/sysenter.c 2007-03-15 18:27:43.000000000 = -0800 @@ -72,6 +72,99 @@ extern const char vsyscall_int80_start, = extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; static struct page *syscall_pages[1]; = +#ifdef CONFIG_COMPAT_VDSO +static void fixup_vsyscall_elf(char *page) +{ + Elf32_Ehdr *hdr; + Elf32_Shdr *sechdrs; + Elf32_Phdr *phdr; + char *secstrings; + int i, j, n; + + hdr =3D (Elf32_Ehdr *)page; + = + printk("Remapping...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- linux-2.6.21.orig/arch/i386/kernel/sysenter.c 2007-03-06 18:51:34.00000= 0000 -0800 +++ linux-2.6.21/arch/i386/kernel/sysenter.c 2007-03-15 18:27:43.000000000 = -0800 @@ -72,6 +72,99 @@ extern const char vsyscall_int80_start, = extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; static struct page *syscall_pages[1]; = +#ifdef CONFIG_COMPAT_VDSO +static void fixup_vsyscall_elf(char *page) +{ + Elf32_Ehdr *hdr; + Elf32_Shdr *sechdrs; + Elf32_Phdr *phdr; + char *secstrings; + int i, j, n; + + hdr =3D (Elf32_Ehdr *)page; + = + printk("Remapping...
2007 Apr 18
4
[patch 0/2] Updates to compat VDSOs
Hi Andi, Here's a couple of patches to fix up COMPAT_VDSO: The first is a straightforward implementation of Jan's original idea of relocating the VDSO to match its mapped location. Unlike Jan and Zach's version, I changed it to relocate based on the phdrs rather than the sections; the result is pleasantly compact. The second patch takes advantage of the fact that all the
2007 Apr 18
4
[patch 0/2] Updates to compat VDSOs
Hi Andi, Here's a couple of patches to fix up COMPAT_VDSO: The first is a straightforward implementation of Jan's original idea of relocating the VDSO to match its mapped location. Unlike Jan and Zach's version, I changed it to relocate based on the phdrs rather than the sections; the result is pleasantly compact. The second patch takes advantage of the fact that all the
2007 Apr 18
1
[PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
...D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- linux-2.6.13.orig/arch/i386/kernel/sysenter.c 2005-08-02 17:04:12.00000= 0000 -0700 +++ linux-2.6.13/arch/i386/kernel/sysenter.c 2005-08-05 15:47:53.000000000 = -0700 @@ -46,22 +46,90 @@ extern const char vsyscall_int80_start, vsyscall_int80_end; extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; = +#ifdef CONFIG_RELOCATABLE_FIXMAP +extern const char SYSENTER_RETURN; +const char *SYSENTER_RETURN_ADDR; + +static void fixup_vsyscall_elf(char *page) +{ + Elf32_Ehdr *hdr; + Elf32_Shdr *sechdrs; + Elf32_Phdr *phdr; + char *secstrings; + int i, j, n; + + hdr =3D (Elf32_E...
2007 Apr 18
1
[PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
...D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- linux-2.6.13.orig/arch/i386/kernel/sysenter.c 2005-08-02 17:04:12.00000= 0000 -0700 +++ linux-2.6.13/arch/i386/kernel/sysenter.c 2005-08-05 15:47:53.000000000 = -0700 @@ -46,22 +46,90 @@ extern const char vsyscall_int80_start, vsyscall_int80_end; extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; = +#ifdef CONFIG_RELOCATABLE_FIXMAP +extern const char SYSENTER_RETURN; +const char *SYSENTER_RETURN_ADDR; + +static void fixup_vsyscall_elf(char *page) +{ + Elf32_Ehdr *hdr; + Elf32_Shdr *sechdrs; + Elf32_Phdr *phdr; + char *secstrings; + int i, j, n; + + hdr =3D (Elf32_E...
2007 Mar 05
7
[PATCH 2/10] linux 2.6.18: COMPAT_VDSO
...yscall_page, &vsyscall_int80_start, &vsyscall_int80_end - &vsyscall_int80_start); + relocate_vdso(syscall_page, VDSO_PRELINK, __fix_to_virt(FIX_VDSO), + vdso_rel_int80_start, vdso_rel_int80_end); return 0; } memcpy(syscall_page, &vsyscall_sysenter_start, &vsyscall_sysenter_end - &vsyscall_sysenter_start); + relocate_vdso(syscall_page, VDSO_PRELINK, __fix_to_virt(FIX_VDSO), + vdso_rel_sysenter_start, vdso_rel_sysenter_end); return 0; } Index: head-2007-02-27/arch/i386/kernel/vsyscall.S ===========================...
2007 Mar 05
7
[PATCH 2/10] linux 2.6.18: COMPAT_VDSO
...yscall_page, &vsyscall_int80_start, &vsyscall_int80_end - &vsyscall_int80_start); + relocate_vdso(syscall_page, VDSO_PRELINK, __fix_to_virt(FIX_VDSO), + vdso_rel_int80_start, vdso_rel_int80_end); return 0; } memcpy(syscall_page, &vsyscall_sysenter_start, &vsyscall_sysenter_end - &vsyscall_sysenter_start); + relocate_vdso(syscall_page, VDSO_PRELINK, __fix_to_virt(FIX_VDSO), + vdso_rel_sysenter_start, vdso_rel_sysenter_end); return 0; } Index: head-2007-02-27/arch/i386/kernel/vsyscall.S ===========================...
2007 Mar 05
7
[PATCH 2/10] linux 2.6.18: COMPAT_VDSO
...yscall_page, &vsyscall_int80_start, &vsyscall_int80_end - &vsyscall_int80_start); + relocate_vdso(syscall_page, VDSO_PRELINK, __fix_to_virt(FIX_VDSO), + vdso_rel_int80_start, vdso_rel_int80_end); return 0; } memcpy(syscall_page, &vsyscall_sysenter_start, &vsyscall_sysenter_end - &vsyscall_sysenter_start); + relocate_vdso(syscall_page, VDSO_PRELINK, __fix_to_virt(FIX_VDSO), + vdso_rel_sysenter_start, vdso_rel_sysenter_end); return 0; } Index: head-2007-02-27/arch/i386/kernel/vsyscall.S ===========================...
2007 Apr 18
1
[PATCH] Gerd Hoffman's move-vsyscall-into-user-address-range patch
...x/gfp.h> #include <linux/string.h> #include <linux/elf.h> +#include <linux/mm.h> #include <asm/cpufeature.h> #include <asm/msr.h> @@ -45,23 +46,88 @@ void enable_sep_cpu(void) */ extern const char vsyscall_int80_start, vsyscall_int80_end; extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; +static void *syscall_page; int __init sysenter_setup(void) { - void *page = (void *)get_zeroed_page(GFP_ATOMIC); - - __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC); + syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); if (!boot_cpu_has(X86_FEATURE_SEP))...
2007 Apr 18
1
[PATCH] Gerd Hoffman's move-vsyscall-into-user-address-range patch
...x/gfp.h> #include <linux/string.h> #include <linux/elf.h> +#include <linux/mm.h> #include <asm/cpufeature.h> #include <asm/msr.h> @@ -45,23 +46,88 @@ void enable_sep_cpu(void) */ extern const char vsyscall_int80_start, vsyscall_int80_end; extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; +static void *syscall_page; int __init sysenter_setup(void) { - void *page = (void *)get_zeroed_page(GFP_ATOMIC); - - __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC); + syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); if (!boot_cpu_has(X86_FEATURE_SEP))...
2007 Apr 18
4
[patch 0/4] Clean up asm/bugs.h, identify_cpu() and update COMPAT_VDSO
Hi Andi, Four patches: - clean up asm/bugs.h, by moving all the C code into its own C file - split identify_cpu() into boot and secondary variants, so that boot-time setup functions can be marked __init - repost of the COMPAT_VDSO patches with a bit more robustness from unknown DT_tags, and functions marked __init, since all this is boot-time only setup. Thanks, J --
2007 Apr 18
4
[patch 0/4] Clean up asm/bugs.h, identify_cpu() and update COMPAT_VDSO
Hi Andi, Four patches: - clean up asm/bugs.h, by moving all the C code into its own C file - split identify_cpu() into boot and secondary variants, so that boot-time setup functions can be marked __init - repost of the COMPAT_VDSO patches with a bit more robustness from unknown DT_tags, and functions marked __init, since all this is boot-time only setup. Thanks, J --
2007 Apr 18
2
[PATCH] exec-shield style vdso move.
.../gfp.h> #include <linux/string.h> #include <linux/elf.h> +#include <linux/mm.h> #include <asm/cpufeature.h> #include <asm/msr.h> @@ -45,23 +46,111 @@ void enable_sep_cpu(void) */ extern const char vsyscall_int80_start, vsyscall_int80_end; extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; +static void *syscall_page; int __init sysenter_setup(void) { - void *page = (void *)get_zeroed_page(GFP_ATOMIC); - - __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC); + syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); if (!boot_cpu_has(X86_FEATURE_SEP))...
2007 Apr 18
2
[PATCH] exec-shield style vdso move.
.../gfp.h> #include <linux/string.h> #include <linux/elf.h> +#include <linux/mm.h> #include <asm/cpufeature.h> #include <asm/msr.h> @@ -45,23 +46,111 @@ void enable_sep_cpu(void) */ extern const char vsyscall_int80_start, vsyscall_int80_end; extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; +static void *syscall_page; int __init sysenter_setup(void) { - void *page = (void *)get_zeroed_page(GFP_ATOMIC); - - __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC); + syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); if (!boot_cpu_has(X86_FEATURE_SEP))...
2007 Apr 18
0
[PATCH 2/2] x86: clean up identify_cpu
...); + identify_secondary_cpu(c); /* * Mask B, Pentium, but not Pentium MMX */ =================================================================== --- a/arch/i386/kernel/sysenter.c +++ b/arch/i386/kernel/sysenter.c @@ -68,7 +68,7 @@ extern const char vsyscall_sysenter_star extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; static struct page *syscall_pages[1]; -int __cpuinit sysenter_setup(void) +int __init sysenter_setup(void) { void *syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); syscall_pages[0] = virt_to_page(syscall_page); =====================================================...
2007 Apr 18
0
[PATCH 2/2] x86: clean up identify_cpu
...); + identify_secondary_cpu(c); /* * Mask B, Pentium, but not Pentium MMX */ =================================================================== --- a/arch/i386/kernel/sysenter.c +++ b/arch/i386/kernel/sysenter.c @@ -68,7 +68,7 @@ extern const char vsyscall_sysenter_star extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; static struct page *syscall_pages[1]; -int __cpuinit sysenter_setup(void) +int __init sysenter_setup(void) { void *syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); syscall_pages[0] = virt_to_page(syscall_page); =====================================================...