aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2006-12-13 03:34:40 -0500
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-13 12:05:50 -0500
commit23d95a03d63eff25118b50737006ce6e7c1b8def (patch)
treefaae8f9f9e7d7f93e55ed71fa801239e49dcf9fe
parent81fc685a898f84d0787eeebb1c118de0bd3484a0 (diff)
[PATCH] lockdep: improve lockdep_reset()
Clear all the chains during lockdep_reset(). This fixes some locking-selftest false positives i saw on -rt. (never saw those on mainline though, but it could happen.) Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--kernel/lockdep.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 5ba2825bd46a..77fa791f6f31 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -2437,6 +2437,7 @@ EXPORT_SYMBOL_GPL(lock_release);
2437void lockdep_reset(void) 2437void lockdep_reset(void)
2438{ 2438{
2439 unsigned long flags; 2439 unsigned long flags;
2440 int i;
2440 2441
2441 raw_local_irq_save(flags); 2442 raw_local_irq_save(flags);
2442 current->curr_chain_key = 0; 2443 current->curr_chain_key = 0;
@@ -2447,6 +2448,8 @@ void lockdep_reset(void)
2447 nr_softirq_chains = 0; 2448 nr_softirq_chains = 0;
2448 nr_process_chains = 0; 2449 nr_process_chains = 0;
2449 debug_locks = 1; 2450 debug_locks = 1;
2451 for (i = 0; i < CHAINHASH_SIZE; i++)
2452 INIT_LIST_HEAD(chainhash_table + i);
2450 raw_local_irq_restore(flags); 2453 raw_local_irq_restore(flags);
2451} 2454}
2452 2455