ARM: mm: introduce present, faulting entries for PAGE_NONE
authorWill Deacon <will.deacon@arm.com>
Sat, 1 Sep 2012 04:22:12 +0000 (05:22 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 30 Apr 2014 15:23:19 +0000 (16:23 +0100)
commit960bd8ae3e6402a0409b11ed18a7ba9aaf69c3c5
tree2d6d6beb50ddbc3cc400f4e38872ca2abfe5a61c
parent25f60b0397e698cce0473c7c9ff321b7765434d3
ARM: mm: introduce present, faulting entries for PAGE_NONE

commit 26ffd0d43b186b0d5186354da8714a1c2d360df0 upstream.

PROT_NONE mappings apply the page protection attributes defined by _P000
which translate to PAGE_NONE for ARM. These attributes specify an XN,
RDONLY pte that is inaccessible to userspace. However, on kernels
configured without support for domains, such a pte *is* accessible to
the kernel and can be read via get_user, allowing tasks to read
PROT_NONE pages via syscalls such as read/write over a pipe.

This patch introduces a new software pte flag, L_PTE_NONE, that is set
to identify faulting, present entries.

Signed-off-by: Will Deacon <will.deacon@arm.com>
[bwh: Backported to 3.2 as dependency of commit b6ccb9803e90
 ('ARM: 7954/1: mm: remove remaining domain support from ARMv6'):
 - Drop 3-level changes
 - Adjust filename, context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
arch/arm/include/asm/pgtable-2level.h
arch/arm/include/asm/pgtable.h
arch/arm/mm/proc-macros.S
arch/arm/mm/proc-v7.S