diff options
author | Ingo Molnar <mingo@elte.hu> | 2006-12-13 03:34:40 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-13 12:05:50 -0500 |
commit | 23d95a03d63eff25118b50737006ce6e7c1b8def (patch) | |
tree | faae8f9f9e7d7f93e55ed71fa801239e49dcf9fe /kernel | |
parent | 81fc685a898f84d0787eeebb1c118de0bd3484a0 (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>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/lockdep.c | 3 |
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); | |||
2437 | void lockdep_reset(void) | 2437 | void 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 | ||