Messages in this thread Patch in this message | | | Date | Mon, 7 Jul 2008 11:39:28 +0100 (BST) | From | Hugh Dickins <> | Subject | Re: Lockless/Get_User_Pages_Fast causes Xorg 1.4.99.* to lock |
| |
On Mon, 7 Jul 2008, Nick Piggin wrote: > > I think we need a similar fix for s390 too. If so, then it really should > get into 2.6.26, but this late in the release, I hope an s390 maintainer > might be able to test and verify the fix?
Wow, yes, I hadn't realized s390 is ahead of the game there: glad you're back to spot that. But yes, we'd prefer maintainer to confirm and push.
[PATCH]] s390: protect _PAGE_SPECIAL bit against mprotect
Stop mprotect's pte_modify from wiping out the s390 pte_special bit, which caused oops thereafter when vm_normal_page thought X's abnormal was normal.
Signed-off-by: Nick Piggin <npiggin@suse.de> Acked-by: Hugh Dickins <hugh@veritas.com> --- Index: linux-2.6/include/asm-s390/pgtable.h =================================================================== --- linux-2.6.orig/include/asm-s390/pgtable.h +++ linux-2.6/include/asm-s390/pgtable.h @@ -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_s */ 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; }
| |