Ver código fonte

x86: cpa: fix split thinko

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Thomas Gleixner 17 anos atrás
pai
commit
a72a08a4b6
1 arquivos alterados com 4 adições e 0 exclusões
  1. 4 0
      arch/x86/mm/pageattr.c

+ 4 - 0
arch/x86/mm/pageattr.c

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