Revert "Revert "console: implement lockdep support for console_lock""
authorDave Airlie <airlied@redhat.com>
Fri, 8 Feb 2013 02:07:01 +0000 (12:07 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 8 Feb 2013 02:07:01 +0000 (12:07 +1000)
This reverts commit ff0d05bf73620eb7dc8aee7423e992ef87870bdf.

Now that we have all the locking fixes in place, we can revert the
revert. This re-enables lockdep tracking for the console lock,
daee779718a319ff9f83e1ba3339334ac650bb22.

Signed-off-by: Dave Airlie <airlied@redhat.com>
kernel/printk.c

index 267ce780abe8dd0c18b3c6f1d93f3974b75697ed..357f714ddd4983e75e3816577b237d8c8d38bd3f 100644 (file)
@@ -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))