[PATCH] lockdep: fix printk recursion logic
authorIngo Molnar <mingo@elte.hu>
Wed, 11 Oct 2006 08:22:08 +0000 (01:22 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 11 Oct 2006 18:14:24 +0000 (11:14 -0700)
commit256a6b41365e17cebe5c2fc91ddff716c9aa055a
treec491008b3e2fefed6a42ac7f824d191e023fb11f
parent5fcce7432a731e67f1cd3ef1e71dca9ea84dedb1
[PATCH] lockdep: fix printk recursion logic

Bug reported and fixed by Tilman Schmidt <tilman@imap.cc>: if lockdep is
enabled then log messages make it to /var/log/messages belatedly.  The
reason is a missed wakeup of klogd.

Initially there was only a lockdep_internal() protection against lockdep
recursion within vprintk() - it grew the 'outer' lockdep_off()/on()
protection only later on.  But that lockdep_off() made the
release_console_sem() within vprintk() always happen under the
lockdep_internal() condition, causing the bug.

The right solution to remove the inner protection against recursion here -
the outer one is enough.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Tilman Schmidt <tilman@imap.cc>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/printk.c