From: Ingo Molnar Date: Wed, 5 Dec 2007 14:46:09 +0000 (+0100) Subject: lockdep: fix debug_show_all_locks() X-Git-Tag: v2.6.24-rc5~62^2~2 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=856848737bd944c1db3ce0a66bbf67e56bd6f77d;p=linux-2.6 lockdep: fix debug_show_all_locks() fix the oops that can be seen in: http://bugzilla.kernel.org/attachment.cgi?id=13828&action=view it is not safe to print the locks of running tasks. (even with this fix we have a small race - but this is a debug function after all.) Signed-off-by: Ingo Molnar Signed-off-by: Peter Zijlstra --- diff --git a/kernel/lockdep.c b/kernel/lockdep.c index ed38bbfc48..7e2ca7c9d9 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c @@ -3173,6 +3173,13 @@ retry: printk(" locked it.\n"); do_each_thread(g, p) { + /* + * It's not reliable to print a task's held locks + * if it's not sleeping (or if it's not the current + * task): + */ + if (p->state == TASK_RUNNING && p != current) + continue; if (p->lockdep_depth) lockdep_print_held_locks(p); if (!unlock)