aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2005-09-13 05:17:59 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-13 12:59:04 -0400
commitda04c035039b5288039a5bf2d340866114ae994b (patch)
treeb4f75ccaca55c1a65980aada0440c3f096b9b3eb
parent33333373c40633cec8791a284e84e4b116522c8f (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>
-rw-r--r--kernel/sched.c8
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
295static inline void finish_lock_switch(runqueue_t *rq, task_t *prev) 295static 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)