Spotted by Hugh: Stop mprotect's pte_modify from wiping out the powerpc pte_special bit, which caused oops thereafter when vm_normal_page thought X's abnormal was normal. Signed-off-by: Nick Piggin --- Index: linux-2.6/include/asm-powerpc/pgtable-4k.h =================================================================== --- linux-2.6.orig/include/asm-powerpc/pgtable-4k.h +++ linux-2.6/include/asm-powerpc/pgtable-4k.h @@ -60,7 +60,7 @@ /* It should be preserving the high 48 bits and then specifically */ /* preserving _PAGE_SECONDARY | _PAGE_GROUP_IX */ #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | \ - _PAGE_HPTEFLAGS) + _PAGE_SPECIAL | _PAGE_HPTEFLAGS) /* Bits to mask out from a PMD to get to the PTE page */ #define PMD_MASKED_BITS 0