diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2008-01-30 07:34:07 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:34:07 -0500 |
commit | a72a08a4b61cb8868606a69b744848552e92062b (patch) | |
tree | a82c77096eece34c0536de656959aa879cb02687 | |
parent | 3c1df68b848b39270752ff8d4b956cc4a4dce0f6 (diff) |
x86: cpa: fix split thinko
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | arch/x86/mm/pageattr.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 23f0aa3d01c1..a2ee317548f2 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
@@ -216,8 +216,12 @@ repeat: | |||
216 | prot = static_protections(prot, address); | 216 | prot = static_protections(prot, address); |
217 | 217 | ||
218 | if (level == PG_LEVEL_4K) { | 218 | if (level == PG_LEVEL_4K) { |
219 | WARN_ON_ONCE(pgprot_val(prot) & _PAGE_PSE); | ||
219 | set_pte_atomic(kpte, pfn_pte(pfn, canon_pgprot(prot))); | 220 | set_pte_atomic(kpte, pfn_pte(pfn, canon_pgprot(prot))); |
220 | } else { | 221 | } else { |
222 | /* Clear the PSE bit for the 4k level pages ! */ | ||
223 | pgprot_val(prot) = pgprot_val(prot) & ~_PAGE_PSE; | ||
224 | |||
221 | err = split_large_page(kpte, address); | 225 | err = split_large_page(kpte, address); |
222 | if (!err) | 226 | if (!err) |
223 | goto repeat; | 227 | goto repeat; |