diff options
author | Tony Lindgren <tony@atomide.com> | 2012-11-09 22:54:17 (GMT) |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2012-11-09 22:54:17 (GMT) |
commit | f56f52e02a9c3da4bc2cc6eb9ddcf5602ea44b37 (patch) | |
tree | a9ce4f46ea3b2e516698b2c3817e40414a8bbf51 /kernel | |
parent | 84fbd2b8c8da49b4e53fcb484a1564a9b5da61b3 (diff) | |
parent | 6ba54ab4a49bbad736b0254aa6bdf0cb83013815 (diff) | |
download | linux-fsl-qoriq-f56f52e02a9c3da4bc2cc6eb9ddcf5602ea44b37.tar.xz |
Merge branch 'omap-for-v3.8/cleanup-headers-prepare-multiplatform-v3' into omap-for-v3.8/dt
Conflicts:
arch/arm/plat-omap/dmtimer.c
Resolved as suggested by Jon Hunter.
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/printk.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/kernel/printk.c b/kernel/printk.c index 2d607f4..22e070f 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -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 @@ -1908,12 +1914,14 @@ static int __cpuinit console_cpu_notify(struct notifier_block *self, */ void console_lock(void) { - BUG_ON(in_interrupt()); + might_sleep(); + down(&console_sem); if (console_suspended) return; console_locked = 1; console_may_schedule = 1; + mutex_acquire(&console_lock_dep_map, 0, 0, _RET_IP_); } EXPORT_SYMBOL(console_lock); @@ -1935,6 +1943,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); @@ -2095,6 +2104,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)) |