diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2014-03-12 20:28:09 +0400 |
---|---|---|
committer | Jiri Slaby <jslaby@suse.cz> | 2014-05-15 11:54:37 +0400 |
commit | 66fe137aac722bff2ff2cb6798f2bee912276037 (patch) | |
tree | 5bce904e345f6764a3170ce0215afe288b2b410b /arch/arm64/include | |
parent | daab4b1e4dfa0c580f1fcd7a69d65e83b7f54f2c (diff) | |
download | linux-66fe137aac722bff2ff2cb6798f2bee912276037.tar.xz |
arm64: Do not synchronise I and D caches for special ptes
commit 71fdb6bf61bf0692f004f9daf5650392c0cfe300 upstream.
Special pte mappings are not intended to be executable and do not even
have an associated struct page. This patch ensures that we do not call
__sync_icache_dcache() on such ptes.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Reported-by: Steve Capper <Steve.Capper@arm.com>
Tested-by: Laura Abbott <lauraa@codeaurora.org>
Tested-by: Bharat Bhushan <Bharat.Bhushan@freescale.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Diffstat (limited to 'arch/arm64/include')
-rw-r--r-- | arch/arm64/include/asm/pgtable.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 82d95a7e9466..62713586d6e3 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -168,7 +168,7 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) { if (pte_valid_user(pte)) { - if (pte_exec(pte)) + if (!pte_special(pte) && pte_exec(pte)) __sync_icache_dcache(pte, addr); if (!pte_dirty(pte)) pte = pte_wrprotect(pte); |