diff options
author | Ingo Molnar <mingo@elte.hu> | 2005-09-13 05:17:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-13 12:59:04 -0400 |
commit | da04c035039b5288039a5bf2d340866114ae994b (patch) | |
tree | b4f75ccaca55c1a65980aada0440c3f096b9b3eb /kernel/sched.c | |
parent | 33333373c40633cec8791a284e84e4b116522c8f (diff) |
[PATCH] Fix spinlock owner debugging
fix up the runqueue lock owner only if we truly did a context-switch
with the runqueue lock held. Impacts ia64, mips, sparc64 and arm.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 81b3a96ed2d0..1f31a528fdba 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -294,6 +294,10 @@ static inline void prepare_lock_switch(runqueue_t *rq, task_t *next) | |||
294 | 294 | ||
295 | static inline void finish_lock_switch(runqueue_t *rq, task_t *prev) | 295 | static inline void finish_lock_switch(runqueue_t *rq, task_t *prev) |
296 | { | 296 | { |
297 | #ifdef CONFIG_DEBUG_SPINLOCK | ||
298 | /* this is a valid case when another task releases the spinlock */ | ||
299 | rq->lock.owner = current; | ||
300 | #endif | ||
297 | spin_unlock_irq(&rq->lock); | 301 | spin_unlock_irq(&rq->lock); |
298 | } | 302 | } |
299 | 303 | ||
@@ -1529,10 +1533,6 @@ static inline void finish_task_switch(runqueue_t *rq, task_t *prev) | |||
1529 | * Manfred Spraul <manfred@colorfullife.com> | 1533 | * Manfred Spraul <manfred@colorfullife.com> |
1530 | */ | 1534 | */ |
1531 | prev_task_flags = prev->flags; | 1535 | prev_task_flags = prev->flags; |
1532 | #ifdef CONFIG_DEBUG_SPINLOCK | ||
1533 | /* this is a valid case when another task releases the spinlock */ | ||
1534 | rq->lock.owner = current; | ||
1535 | #endif | ||
1536 | finish_arch_switch(prev); | 1536 | finish_arch_switch(prev); |
1537 | finish_lock_switch(rq, prev); | 1537 | finish_lock_switch(rq, prev); |
1538 | if (mm) | 1538 | if (mm) |