提交 2ee91f19 编写于 作者: I Ingo Molnar 提交者: Linus Torvalds

[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: NIngo Molnar <mingo@elte.hu>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 50cc670a
...@@ -24,7 +24,7 @@ extern int debug_locks_off(void); ...@@ -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; \
} \ } \
......
...@@ -77,6 +77,9 @@ void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter, ...@@ -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);
......
...@@ -963,7 +963,9 @@ static void dotest(void (*testcase_fn)(void), int expected, int lockclass_mask) ...@@ -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++;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册