From: Kumar Gala Date: Thu, 30 Jul 2009 04:04:25 +0000 (-0500) Subject: powerpc/mm: Fix SMP issue with MMU context handling code X-Git-Tag: v2.6.31-rc5~13^2~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5156ddce6c0a152ee7ccab2c976c6a8abc8a49b5;p=profile%2Fcommon%2Fkernel-common.git powerpc/mm: Fix SMP issue with MMU context handling code In switch_mmu_context() if we call steal_context_smp() to get a context to use we shouldn't fall through and than call steal_context_up(). Doing so can be problematic in that the 'mm' that steal_context_up() ends up using will not get marked dirty in the stale_map[] for other CPUs that might have used that mm. Thus we could end up with stale TLB entries in the other CPUs that can cause all kinda of havoc. Signed-off-by: Kumar Gala --- diff --git a/arch/powerpc/mm/mmu_context_nohash.c b/arch/powerpc/mm/mmu_context_nohash.c index 92a1971..b1a727d 100644 --- a/arch/powerpc/mm/mmu_context_nohash.c +++ b/arch/powerpc/mm/mmu_context_nohash.c @@ -217,6 +217,7 @@ void switch_mmu_context(struct mm_struct *prev, struct mm_struct *next) id = steal_context_smp(id); if (id == MMU_NO_CONTEXT) goto again; + goto stolen; } #endif /* CONFIG_SMP */ id = steal_context_up(id);