|
@@ -223,6 +223,9 @@ extern char empty_zero_page[PAGE_SIZE];
|
|
|
#define _PAGE_SPECIAL 0x004 /* SW associated with special page */
|
|
|
#define __HAVE_ARCH_PTE_SPECIAL
|
|
|
|
|
|
+/* Set of bits not changed in pte_modify */
|
|
|
+#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_SPECIAL)
|
|
|
+
|
|
|
/* Six different types of pages. */
|
|
|
#define _PAGE_TYPE_EMPTY 0x400
|
|
|
#define _PAGE_TYPE_NONE 0x401
|
|
@@ -681,7 +684,7 @@ static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *pt
|
|
|
*/
|
|
|
static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
|
|
|
{
|
|
|
- pte_val(pte) &= PAGE_MASK;
|
|
|
+ pte_val(pte) &= _PAGE_CHG_MASK;
|
|
|
pte_val(pte) |= pgprot_val(newprot);
|
|
|
return pte;
|
|
|
}
|