arm64: Implement arch-specific pte_access_permitted()
authorCatalin Marinas <catalin.marinas@arm.com>
Thu, 26 Oct 2017 17:36:47 +0000 (18:36 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 30 Oct 2017 12:41:15 +0000 (12:41 +0000)
commit6218f96c58dbf44a06aeaf767aab1f54fc397838
tree4134665de1e47326768e2e5a51e1c330334c386d
parentd7b1d22d3821ecc946848f5db3e7c728696d9722
arm64: Implement arch-specific pte_access_permitted()

The generic pte_access_permitted() implementation only checks for
pte_present() (together with the write permission where applicable).
However, for both kernel ptes and PROT_NONE mappings pte_present() also
returns true on arm64 even though such mappings are not user accessible.
Additionally, arm64 now supports execute-only user permission
(PROT_EXEC) which is implemented by clearing the PTE_USER bit.

With this patch the arm64 implementation of pte_access_permitted()
checks for the PTE_VALID and PTE_USER bits together with writable access
if applicable.

Cc: <stable@vger.kernel.org>
Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/pgtable.h