Commit 4b59f812 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Linus Torvalds

[PATCH] Fix possible race with 4level-fixup.h

When using 4level-fixup.h, a PMD page may end up beeing freed before the
matching PGD entry is cleared due to the way the compatibility macros
work. This can cause nasty races on some architectures.

This patch fixes it by defining pud_clear() to be pgd_clear(). That
means we'll actually write 0 twice, a small price to pay here,
especially seeing how easy it is to convert to the new headers anyway
(hint hint, ppc & ppc64 patches as soon as 2.6.11 is out).
Signed-off-by: default avatarNick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 9a7a579e
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#define pud_bad(pud) 0 #define pud_bad(pud) 0
#define pud_present(pud) 1 #define pud_present(pud) 1
#define pud_ERROR(pud) do { } while (0) #define pud_ERROR(pud) do { } while (0)
#define pud_clear(pud) do { } while (0) #define pud_clear(pud) pgd_clear(pud)
#undef pud_free_tlb #undef pud_free_tlb
#define pud_free_tlb(tlb, x) do { } while (0) #define pud_free_tlb(tlb, x) do { } while (0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment