Commit:     1492192b4a0bb84dd9b792cc0bd30583220a28a7
Parent:     017f021c7e5fe3f82ccc5cbb7b1750e66e00f527
Author:     Jiri Kosina <[EMAIL PROTECTED]>
AuthorDate: Sun Jul 15 23:41:51 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Mon Jul 16 09:05:52 2007 -0700

    kernel/printk.c: document possible deadlock against scheduler
    kernel/printk.c: document possible deadlock against scheduler
    The printk's comment states that it can be called from every context,
    which might lead to false illusion that it could be called from everywhere
    without any restrictions.
    This is however not true - a call to printk() could deadlock if called from
    scheduler code (namely from schedule(), wake_up(), etc) on runqueue lock
    when it tries to wake up klogd. Document this.
    Signed-off-by: Jiri Kosina <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 kernel/printk.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/kernel/printk.c b/kernel/printk.c
index fccacf7..051d27e 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -486,6 +486,9 @@ static int have_callable_console(void)
  * @fmt: format string
  * This is printk().  It can be called from any context.  We want it to work.
+ * Be aware of the fact that if oops_in_progress is not set, we might try to
+ * wake klogd up which could deadlock on runqueue lock if printk() is called
+ * from scheduler code.
  * We try to grab the console_sem.  If we succeed, it's easy - we log the 
output and
  * call the console drivers.  If we fail to get the semaphore we place the 
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to