|
@@ -87,6 +87,12 @@ static DEFINE_SEMAPHORE(console_sem);
|
|
|
struct console *console_drivers;
|
|
|
EXPORT_SYMBOL_GPL(console_drivers);
|
|
|
|
|
|
+#ifdef CONFIG_LOCKDEP
|
|
|
+static struct lockdep_map console_lock_dep_map = {
|
|
|
+ .name = "console_lock"
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
/*
|
|
|
* This is used for debugging the mess that is the VT code by
|
|
|
* keeping track if we have the console semaphore held. It's
|
|
@@ -1918,6 +1924,7 @@ void console_lock(void)
|
|
|
return;
|
|
|
console_locked = 1;
|
|
|
console_may_schedule = 1;
|
|
|
+ mutex_acquire(&console_lock_dep_map, 0, 0, _RET_IP_);
|
|
|
}
|
|
|
EXPORT_SYMBOL(console_lock);
|
|
|
|
|
@@ -1939,6 +1946,7 @@ int console_trylock(void)
|
|
|
}
|
|
|
console_locked = 1;
|
|
|
console_may_schedule = 0;
|
|
|
+ mutex_acquire(&console_lock_dep_map, 0, 1, _RET_IP_);
|
|
|
return 1;
|
|
|
}
|
|
|
EXPORT_SYMBOL(console_trylock);
|
|
@@ -2099,6 +2107,7 @@ skip:
|
|
|
local_irq_restore(flags);
|
|
|
}
|
|
|
console_locked = 0;
|
|
|
+ mutex_release(&console_lock_dep_map, 1, _RET_IP_);
|
|
|
|
|
|
/* Release the exclusive_console once it is used */
|
|
|
if (unlikely(exclusive_console))
|