diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-03-06 19:59:50 -0800 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 01:14:20 -0800 |
commit | a77754b4d0731321db266c6c60ffcd7c62757da5 (patch) | |
tree | 37cc4c6793e2b616791d42ee840e5a007a13eccb /arch/sparc64/mm/tsb.c | |
parent | 9132983ae140a8ca81e95e081d5a4c0dd7a7f670 (diff) | |
download | op-kernel-dev-a77754b4d0731321db266c6c60ffcd7c62757da5.zip op-kernel-dev-a77754b4d0731321db266c6c60ffcd7c62757da5.tar.gz |
[SPARC64]: Bulletproof MMU context locking.
1) Always spin_lock_init() in init_context(). The caller essentially
clears it out, or copies the mm info from the parent. In both
cases we need to explicitly initialize the spinlock.
2) Always do explicit IRQ disabling while taking mm->context.lock
and ctx_alloc_lock.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/mm/tsb.c')
-rw-r--r-- | arch/sparc64/mm/tsb.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/sparc64/mm/tsb.c b/arch/sparc64/mm/tsb.c index 534ac28..f36799b 100644 --- a/arch/sparc64/mm/tsb.c +++ b/arch/sparc64/mm/tsb.c @@ -354,6 +354,7 @@ void tsb_grow(struct mm_struct *mm, unsigned long rss, gfp_t gfp_flags) int init_new_context(struct task_struct *tsk, struct mm_struct *mm) { + spin_lock_init(&mm->context.lock); mm->context.sparc64_ctx_val = 0UL; |