summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2007-04-24 13:05:37 +0200
committerAndi Kleen <andi@basil.nowhere.org>2007-04-24 13:05:37 +0200
commit90767bd13febfdf8a5f5077e2bb975f79d6b919c (patch)
tree878e82d2ab2e75a94303349976535ab1ce378a97
parent9ce883becb83190061369940de9c415595836c9b (diff)
downloadlinux-stable-90767bd13febfdf8a5f5077e2bb975f79d6b919c.tar.gz
linux-stable-90767bd13febfdf8a5f5077e2bb975f79d6b919c.tar.bz2
linux-stable-90767bd13febfdf8a5f5077e2bb975f79d6b919c.zip
[PATCH] x86-64: Always flush all pages in change_page_attr
change_page_attr on x86-64 only flushed the TLB for pages that got reverted. That's not correct: it has to be flushed in all cases. This bug was added in some earlier changes. Just flush all pages for now. This could be done more efficiently, but for this late in the release this seem to be the best fix. Pointed out by Jan Beulich Signed-off-by: Andi Kleen <ak@suse.de>
-rw-r--r--arch/x86_64/mm/pageattr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86_64/mm/pageattr.c b/arch/x86_64/mm/pageattr.c
index 65c5eaa59905..081409aa3452 100644
--- a/arch/x86_64/mm/pageattr.c
+++ b/arch/x86_64/mm/pageattr.c
@@ -81,8 +81,8 @@ static void flush_kernel_map(void *arg)
void *adr = page_address(pg);
if (cpu_has_clflush)
cache_flush_page(adr);
- __flush_tlb_one(adr);
}
+ __flush_tlb_all();
}
static inline void flush_map(struct list_head *l)