tree 6801c0867e480d80e4bd889662c7bd04f4075e8f
parent 8b8a9da525c592f129ace454c4d82a80b122827a
author Benjamin LaHaise <[EMAIL PROTECTED]> Wed, 13 Jul 2005 03:58:22 -0700
committer Linus Torvalds <[EMAIL PROTECTED]> Wed, 13 Jul 2005 06:01:01 -0700

[PATCH] uml: tlb flushing fix

This patch fixes a fairly serious tlb flushing bug that makes aio use under
uml very unreliable -- SEGVs, Oops and panic()s occur as a result of stale
tlb entires being used by uml when aio switches mms due to the fact that
uml does not implement the activate_mm() hook.  This patch introduces a
simple but correct approach (read: hammer) for implementing activate_mm()
in uml by doing a force_flush_all() if the new mm is different from old.
With this patch in place, uml is able to succeed at the aio test case that
was randomly faulting for me before.

Cc: Jeff Dike <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>

 include/asm-um/mmu_context.h |    4 ++++
 1 files changed, 4 insertions(+)

diff --git a/include/asm-um/mmu_context.h b/include/asm-um/mmu_context.h
--- a/include/asm-um/mmu_context.h
+++ b/include/asm-um/mmu_context.h
@@ -16,8 +16,12 @@
 
 #define deactivate_mm(tsk,mm)  do { } while (0)
 
+extern void force_flush_all(void);
+
 static inline void activate_mm(struct mm_struct *old, struct mm_struct *new)
 {
+       if (old != new)
+               force_flush_all();
 }
 
 static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, 
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to