x86: cpa: fix split thinko
authorThomas Gleixner <tglx@linutronix.de>
Wed, 30 Jan 2008 12:34:07 +0000 (13:34 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 30 Jan 2008 12:34:07 +0000 (13:34 +0100)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/mm/pageattr.c

index 23f0aa3d01c1476c41f22f7fd7470b41f33deced..a2ee317548f260d97eb584c4e281e9f6e3bf3d78 100644 (file)
@@ -216,8 +216,12 @@ repeat:
        prot = static_protections(prot, address);
 
        if (level == PG_LEVEL_4K) {
+               WARN_ON_ONCE(pgprot_val(prot) & _PAGE_PSE);
                set_pte_atomic(kpte, pfn_pte(pfn, canon_pgprot(prot)));
        } else {
+               /* Clear the PSE bit for the 4k level pages ! */
+               pgprot_val(prot) = pgprot_val(prot) & ~_PAGE_PSE;
+
                err = split_large_page(kpte, address);
                if (!err)
                        goto repeat;