[PATCH] lockdep: show more details about self-test failures

Make the locking self-test failures (of 'FAILURE' type) easier to debug by
printing more information.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Ingo Molnar 2006-12-06 20:39:32 -08:00 committed by Linus Torvalds
parent 50cc670aeb
commit 2ee91f197c
3 changed files with 6 additions and 1 deletions

View File

@ -24,7 +24,7 @@ extern int debug_locks_off(void);
int __ret = 0; \ int __ret = 0; \
\ \
if (unlikely(c)) { \ if (unlikely(c)) { \
if (debug_locks_off()) \ if (debug_locks_silent || debug_locks_off()) \
WARN_ON(1); \ WARN_ON(1); \
__ret = 1; \ __ret = 1; \
} \ } \

View File

@ -77,6 +77,9 @@ void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
void debug_mutex_unlock(struct mutex *lock) void debug_mutex_unlock(struct mutex *lock)
{ {
if (unlikely(!debug_locks))
return;
DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info()); DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
DEBUG_LOCKS_WARN_ON(lock->magic != lock); DEBUG_LOCKS_WARN_ON(lock->magic != lock);
DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next); DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);

View File

@ -963,7 +963,9 @@ static void dotest(void (*testcase_fn)(void), int expected, int lockclass_mask)
printk("failed|"); printk("failed|");
} else { } else {
unexpected_testcase_failures++; unexpected_testcase_failures++;
printk("FAILED|"); printk("FAILED|");
dump_stack();
} }
} else { } else {
testcase_successes++; testcase_successes++;