|
@@ -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;
|
|
|
}
|
|
|
|