From: Andrew Morton Signed-off-by: Andrew Morton --- arch/i386/kernel/sysenter.c | 6 +++--- arch/i386/mm/pgtable.c | 2 +- include/asm-i386/elf.h | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff -puN arch/i386/kernel/sysenter.c~x86-move-vsyscall-page-out-of-fixmap-above-stack-tidy arch/i386/kernel/sysenter.c --- devel/arch/i386/kernel/sysenter.c~x86-move-vsyscall-page-out-of-fixmap-above-stack-tidy 2006-05-21 02:51:53.000000000 -0700 +++ devel-akpm/arch/i386/kernel/sysenter.c 2006-05-21 02:51:53.000000000 -0700 @@ -91,11 +91,10 @@ int arch_setup_additional_pages(struct l struct mm_struct *mm = current->mm; int ret; - vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL); + vma = kmem_cache_zalloc(vm_area_cachep, SLAB_KERNEL); if (!vma) return -ENOMEM; - memset(vma, 0, sizeof(struct vm_area_struct)); /* Could randomize here */ vma->vm_start = VSYSCALL_BASE; vma->vm_end = VSYSCALL_BASE + PAGE_SIZE; @@ -107,7 +106,8 @@ int arch_setup_additional_pages(struct l vma->vm_mm = mm; down_write(&mm->mmap_sem); - if ((ret = insert_vm_struct(mm, vma))) { + ret = insert_vm_struct(mm, vma); + if (ret) { up_write(&mm->mmap_sem); kmem_cache_free(vm_area_cachep, vma); return ret; diff -puN arch/i386/mm/pgtable.c~x86-move-vsyscall-page-out-of-fixmap-above-stack-tidy arch/i386/mm/pgtable.c --- devel/arch/i386/mm/pgtable.c~x86-move-vsyscall-page-out-of-fixmap-above-stack-tidy 2006-05-21 02:51:53.000000000 -0700 +++ devel-akpm/arch/i386/mm/pgtable.c 2006-05-21 02:51:53.000000000 -0700 @@ -139,7 +139,7 @@ void set_pmd_pfn(unsigned long vaddr, un __flush_tlb_one(vaddr); } -static int nr_fixmaps = 0; +static int nr_fixmaps; unsigned long __FIXADDR_TOP = 0xfffff000; EXPORT_SYMBOL(__FIXADDR_TOP); diff -puN include/asm-i386/elf.h~x86-move-vsyscall-page-out-of-fixmap-above-stack-tidy include/asm-i386/elf.h --- devel/include/asm-i386/elf.h~x86-move-vsyscall-page-out-of-fixmap-above-stack-tidy 2006-05-21 02:51:53.000000000 -0700 +++ devel-akpm/include/asm-i386/elf.h 2006-05-21 02:51:53.000000000 -0700 @@ -26,6 +26,8 @@ #define R_386_GOTPC 10 #define R_386_NUM 11 +struct linux_binprm; + typedef unsigned long elf_greg_t; #define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t)) @@ -135,7 +137,6 @@ extern int dump_task_extended_fpu (struc extern void __kernel_vsyscall; #define ARCH_HAS_SETUP_ADDITIONAL_PAGES -struct linux_binprm; extern int arch_setup_additional_pages(struct linux_binprm *bprm, int executable_stack); _