Commit a7e4705b authored by Hugh Dickins's avatar Hugh Dickins Committed by Linus Torvalds

[PATCH] mm: cris v32 mmu_context_lock

The cris v32 switch_mm guards get_mmu_context with next->page_table_lock: good
it's not really SMP yet, since get_mmu_context messes with global variables
affecting other mms.  Replace by global mmu_context_lock.
Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 92dc6fcc
...@@ -175,6 +175,8 @@ init_new_context(struct task_struct *tsk, struct mm_struct *mm) ...@@ -175,6 +175,8 @@ init_new_context(struct task_struct *tsk, struct mm_struct *mm)
return 0; return 0;
} }
static DEFINE_SPINLOCK(mmu_context_lock);
/* Called in schedule() just before actually doing the switch_to. */ /* Called in schedule() just before actually doing the switch_to. */
void void
switch_mm(struct mm_struct *prev, struct mm_struct *next, switch_mm(struct mm_struct *prev, struct mm_struct *next,
...@@ -183,10 +185,10 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next, ...@@ -183,10 +185,10 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
int cpu = smp_processor_id(); int cpu = smp_processor_id();
/* Make sure there is a MMU context. */ /* Make sure there is a MMU context. */
spin_lock(&next->page_table_lock); spin_lock(&mmu_context_lock);
get_mmu_context(next); get_mmu_context(next);
cpu_set(cpu, next->cpu_vm_mask); cpu_set(cpu, next->cpu_vm_mask);
spin_unlock(&next->page_table_lock); spin_unlock(&mmu_context_lock);
/* /*
* Remember the pgd for the fault handlers. Keep a seperate copy of it * Remember the pgd for the fault handlers. Keep a seperate copy of it
......
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