mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 23:20:05 +00:00
[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: Hugh Dickins <hugh@veritas.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
92dc6fcc84
commit
a7e4705b24
@ -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,
|
|||||||
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user