Loading arch/arm/include/asm/page.h +2 −0 Original line number Diff line number Diff line Loading @@ -142,7 +142,9 @@ extern void __cpu_copy_user_highpage(struct page *to, struct page *from, #define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) extern void copy_page(void *to, const void *from); #ifdef CONFIG_KUSER_HELPERS #define __HAVE_ARCH_GATE_AREA 1 #endif #ifdef CONFIG_ARM_LPAE #include <asm/pgtable-3level-types.h> Loading arch/arm/kernel/process.c +6 −1 Original line number Diff line number Diff line Loading @@ -566,6 +566,7 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) } #ifdef CONFIG_MMU #ifdef CONFIG_KUSER_HELPERS /* * The vectors page is always readable from user space for the * atomic helpers. Insert it into the gate_vma so that it is visible Loading Loading @@ -598,10 +599,14 @@ int in_gate_area_no_mm(unsigned long addr) { return in_gate_area(NULL, addr); } #define is_gate_vma(vma) ((vma) = &gate_vma) #else #define is_gate_vma(vma) 0 #endif const char *arch_vma_name(struct vm_area_struct *vma) { if (vma == &gate_vma) if (is_gate_vma(vma)) return "[vectors]"; else if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.sigpage) return "[sigpage]"; Loading arch/arm/mm/mmu.c +4 −0 Original line number Diff line number Diff line Loading @@ -1335,7 +1335,11 @@ static void __init devicemaps_init(struct machine_desc *mdesc) map.pfn = __phys_to_pfn(virt_to_phys(vectors)); map.virtual = 0xffff0000; map.length = PAGE_SIZE; #ifdef CONFIG_KUSER_HELPERS map.type = MT_HIGH_VECTORS; #else map.type = MT_LOW_VECTORS; #endif create_mapping(&map); if (!vectors_high()) { Loading Loading
arch/arm/include/asm/page.h +2 −0 Original line number Diff line number Diff line Loading @@ -142,7 +142,9 @@ extern void __cpu_copy_user_highpage(struct page *to, struct page *from, #define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) extern void copy_page(void *to, const void *from); #ifdef CONFIG_KUSER_HELPERS #define __HAVE_ARCH_GATE_AREA 1 #endif #ifdef CONFIG_ARM_LPAE #include <asm/pgtable-3level-types.h> Loading
arch/arm/kernel/process.c +6 −1 Original line number Diff line number Diff line Loading @@ -566,6 +566,7 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) } #ifdef CONFIG_MMU #ifdef CONFIG_KUSER_HELPERS /* * The vectors page is always readable from user space for the * atomic helpers. Insert it into the gate_vma so that it is visible Loading Loading @@ -598,10 +599,14 @@ int in_gate_area_no_mm(unsigned long addr) { return in_gate_area(NULL, addr); } #define is_gate_vma(vma) ((vma) = &gate_vma) #else #define is_gate_vma(vma) 0 #endif const char *arch_vma_name(struct vm_area_struct *vma) { if (vma == &gate_vma) if (is_gate_vma(vma)) return "[vectors]"; else if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.sigpage) return "[sigpage]"; Loading
arch/arm/mm/mmu.c +4 −0 Original line number Diff line number Diff line Loading @@ -1335,7 +1335,11 @@ static void __init devicemaps_init(struct machine_desc *mdesc) map.pfn = __phys_to_pfn(virt_to_phys(vectors)); map.virtual = 0xffff0000; map.length = PAGE_SIZE; #ifdef CONFIG_KUSER_HELPERS map.type = MT_HIGH_VECTORS; #else map.type = MT_LOW_VECTORS; #endif create_mapping(&map); if (!vectors_high()) { Loading