summaryrefslogtreecommitdiffstats
path: root/kernel/printk.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-02-24 18:22:39 +0100
committerIngo Molnar <mingo@elte.hu>2009-02-24 18:22:39 +0100
commita7f4463e0300b5135c0f0caf7c34a0529405f986 (patch)
tree8df5f13094778eff3c8653bcc249cd265378b80a /kernel/printk.c
parentMerge branch 'tip/x86/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/gi... (diff)
parentLinux 2.6.29-rc6 (diff)
downloadlinux-a7f4463e0300b5135c0f0caf7c34a0529405f986.tar.xz
linux-a7f4463e0300b5135c0f0caf7c34a0529405f986.zip
Merge branch 'tracing/ftrace'; commit 'v2.6.29-rc6' into tracing/core
Diffstat (limited to 'kernel/printk.c')
-rw-r--r--kernel/printk.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/kernel/printk.c b/kernel/printk.c
index 69188f226a93..e3602d0755b0 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -73,7 +73,6 @@ EXPORT_SYMBOL(oops_in_progress);
* driver system.
*/
static DECLARE_MUTEX(console_sem);
-static DECLARE_MUTEX(secondary_console_sem);
struct console *console_drivers;
EXPORT_SYMBOL_GPL(console_drivers);
@@ -891,12 +890,14 @@ void suspend_console(void)
printk("Suspending console(s) (use no_console_suspend to debug)\n");
acquire_console_sem();
console_suspended = 1;
+ up(&console_sem);
}
void resume_console(void)
{
if (!console_suspend_enabled)
return;
+ down(&console_sem);
console_suspended = 0;
release_console_sem();
}
@@ -912,11 +913,9 @@ void resume_console(void)
void acquire_console_sem(void)
{
BUG_ON(in_interrupt());
- if (console_suspended) {
- down(&secondary_console_sem);
- return;
- }
down(&console_sem);
+ if (console_suspended)
+ return;
console_locked = 1;
console_may_schedule = 1;
}
@@ -926,6 +925,10 @@ int try_acquire_console_sem(void)
{
if (down_trylock(&console_sem))
return -1;
+ if (console_suspended) {
+ up(&console_sem);
+ return -1;
+ }
console_locked = 1;
console_may_schedule = 0;
return 0;
@@ -979,7 +982,7 @@ void release_console_sem(void)
unsigned wake_klogd = 0;
if (console_suspended) {
- up(&secondary_console_sem);
+ up(&console_sem);
return;
}