arm64: Do not synchronise I and D caches for special ptes
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / include / asm / pgtable.h
index 2d3cede6270904006d1e5b14aa7a09b5201a22bc..72c9ac38cdd97455e47656acf3f67cf02ef485c8 100644 (file)
@@ -199,7 +199,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_write(pte))
                        pte_val(pte) &= ~PTE_RDONLY;