Loading arch/ia64/mm/init.c +17 −2 Original line number Diff line number Diff line Loading @@ -305,8 +305,9 @@ setup_gate (void) struct page *page; /* * Map the gate page twice: once read-only to export the ELF headers etc. and once * execute-only page to enable privilege-promotion via "epc": * Map the gate page twice: once read-only to export the ELF * headers etc. and once execute-only page to enable * privilege-promotion via "epc": */ page = virt_to_page(ia64_imva(__start_gate_section)); put_kernel_page(page, GATE_ADDR, PAGE_READONLY); Loading @@ -315,6 +316,20 @@ setup_gate (void) put_kernel_page(page, GATE_ADDR + PAGE_SIZE, PAGE_GATE); #else put_kernel_page(page, GATE_ADDR + PERCPU_PAGE_SIZE, PAGE_GATE); /* Fill in the holes (if any) with read-only zero pages: */ { unsigned long addr; for (addr = GATE_ADDR + PAGE_SIZE; addr < GATE_ADDR + PERCPU_PAGE_SIZE; addr += PAGE_SIZE) { put_kernel_page(ZERO_PAGE(0), addr, PAGE_READONLY); put_kernel_page(ZERO_PAGE(0), addr + PERCPU_PAGE_SIZE, PAGE_READONLY); } } #endif ia64_patch_gate(); } Loading include/asm-ia64/pgtable.h +6 −2 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ * This hopefully works with any (fixed) IA-64 page-size, as defined * in <asm/page.h>. * * Copyright (C) 1998-2004 Hewlett-Packard Co * Copyright (C) 1998-2005 Hewlett-Packard Co * David Mosberger-Tang <davidm@hpl.hp.com> */ Loading Loading @@ -551,7 +551,11 @@ do { \ /* These tell get_user_pages() that the first gate page is accessible from user-level. */ #define FIXADDR_USER_START GATE_ADDR #ifdef HAVE_BUGGY_SEGREL # define FIXADDR_USER_END (GATE_ADDR + 2*PAGE_SIZE) #else # define FIXADDR_USER_END (GATE_ADDR + 2*PERCPU_PAGE_SIZE) #endif #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY Loading Loading
arch/ia64/mm/init.c +17 −2 Original line number Diff line number Diff line Loading @@ -305,8 +305,9 @@ setup_gate (void) struct page *page; /* * Map the gate page twice: once read-only to export the ELF headers etc. and once * execute-only page to enable privilege-promotion via "epc": * Map the gate page twice: once read-only to export the ELF * headers etc. and once execute-only page to enable * privilege-promotion via "epc": */ page = virt_to_page(ia64_imva(__start_gate_section)); put_kernel_page(page, GATE_ADDR, PAGE_READONLY); Loading @@ -315,6 +316,20 @@ setup_gate (void) put_kernel_page(page, GATE_ADDR + PAGE_SIZE, PAGE_GATE); #else put_kernel_page(page, GATE_ADDR + PERCPU_PAGE_SIZE, PAGE_GATE); /* Fill in the holes (if any) with read-only zero pages: */ { unsigned long addr; for (addr = GATE_ADDR + PAGE_SIZE; addr < GATE_ADDR + PERCPU_PAGE_SIZE; addr += PAGE_SIZE) { put_kernel_page(ZERO_PAGE(0), addr, PAGE_READONLY); put_kernel_page(ZERO_PAGE(0), addr + PERCPU_PAGE_SIZE, PAGE_READONLY); } } #endif ia64_patch_gate(); } Loading
include/asm-ia64/pgtable.h +6 −2 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ * This hopefully works with any (fixed) IA-64 page-size, as defined * in <asm/page.h>. * * Copyright (C) 1998-2004 Hewlett-Packard Co * Copyright (C) 1998-2005 Hewlett-Packard Co * David Mosberger-Tang <davidm@hpl.hp.com> */ Loading Loading @@ -551,7 +551,11 @@ do { \ /* These tell get_user_pages() that the first gate page is accessible from user-level. */ #define FIXADDR_USER_START GATE_ADDR #ifdef HAVE_BUGGY_SEGREL # define FIXADDR_USER_END (GATE_ADDR + 2*PAGE_SIZE) #else # define FIXADDR_USER_END (GATE_ADDR + 2*PERCPU_PAGE_SIZE) #endif #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY Loading