Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ffeb918 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ARM: make vectors page inaccessible from userspace"

parents 99bd4e41 c0d8e524
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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>
+6 −1
Original line number Diff line number Diff line
@@ -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
@@ -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]";
+4 −0
Original line number Diff line number Diff line
@@ -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()) {