nonlinear vma problem in uml

From: Miklos Szeredi
Date: Fri Mar 02 2007 - 18:07:45 EST


_PAGE_PROTNONE conflicts with the lowest bit of pgoff. This causes
all sorts of weirdness when nonlinear mappings are used.

Took me a good half day to track this down.

Signed-off-by: Miklos Szeredi <mszeredi@xxxxxxx>
---

Index: linux/include/asm-um/pgtable-2level.h
===================================================================
--- linux.orig/include/asm-um/pgtable-2level.h 2007-03-02 23:03:15.000000000 +0100
+++ linux/include/asm-um/pgtable-2level.h 2007-03-02 23:03:26.000000000 +0100
@@ -45,12 +45,12 @@ static inline void pgd_mkuptodate(pgd_t
((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))

/*
- * Bits 0 through 3 are taken
+ * Bits 0 through 4 are taken
*/
-#define PTE_FILE_MAX_BITS 28
+#define PTE_FILE_MAX_BITS 27

-#define pte_to_pgoff(pte) (pte_val(pte) >> 4)
+#define pte_to_pgoff(pte) (pte_val(pte) >> 5)

-#define pgoff_to_pte(off) ((pte_t) { ((off) << 4) + _PAGE_FILE })
+#define pgoff_to_pte(off) ((pte_t) { ((off) << 5) + _PAGE_FILE })

#endif
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/