|
@@ -199,7 +199,7 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
|
|
pte_t *ptep, pte_t pte)
|
|
pte_t *ptep, pte_t pte)
|
|
{
|
|
{
|
|
if (pte_valid_user(pte)) {
|
|
if (pte_valid_user(pte)) {
|
|
- if (pte_exec(pte))
|
|
|
|
|
|
+ if (!pte_special(pte) && pte_exec(pte))
|
|
__sync_icache_dcache(pte, addr);
|
|
__sync_icache_dcache(pte, addr);
|
|
if (pte_dirty(pte) && pte_write(pte))
|
|
if (pte_dirty(pte) && pte_write(pte))
|
|
pte_val(pte) &= ~PTE_RDONLY;
|
|
pte_val(pte) &= ~PTE_RDONLY;
|