While working on detector of new warn/err/crit/... messages, I found that the
following messages was printed with the warn loglevel:
[    0.001607] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., 
Ingo Molnar
[    0.001625] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.001641] ... MAX_LOCK_DEPTH:          48
[    0.001658] ... MAX_LOCKDEP_KEYS:        8191
[    0.001673] ... CLASSHASH_SIZE:          4096
[    0.001689] ... MAX_LOCKDEP_ENTRIES:     32768
[    0.001704] ... MAX_LOCKDEP_CHAINS:      65536
[    0.001719] ... CHAINHASH_SIZE:          32768
[    0.001735]  memory used by lock dependency info: 4623 kB

While the cause is still unknown to me, converting printk to pr_info fixed the 
issue.

Signed-off-by: Corentin Labbe <[email protected]>
---
 kernel/locking/lockdep.c | 152 +++++++++++++++++++++++------------------------
 1 file changed, 76 insertions(+), 76 deletions(-)

diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index 1efada2..9454597 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -560,9 +560,9 @@ static void lockdep_print_held_locks(struct task_struct *p)
        int i, depth = READ_ONCE(p->lockdep_depth);
 
        if (!depth)
-               printk("no locks held by %s/%d.\n", p->comm, task_pid_nr(p));
+               pr_info("no locks held by %s/%d.\n", p->comm, task_pid_nr(p));
        else
-               printk("%d lock%s held by %s/%d:\n", depth,
+               pr_info("%d lock%s held by %s/%d:\n", depth,
                       depth > 1 ? "s" : "", p->comm, task_pid_nr(p));
        /*
         * It's not reliable to print a task's held locks if it's not sleeping
@@ -571,14 +571,14 @@ static void lockdep_print_held_locks(struct task_struct 
*p)
        if (p->state == TASK_RUNNING && p != current)
                return;
        for (i = 0; i < depth; i++) {
-               printk(" #%d: ", i);
+               pr_info(" #%d: ", i);
                print_lock(p->held_locks + i);
        }
 }
 
 static void print_kernel_ident(void)
 {
-       printk("%s %.*s %s\n", init_utsname()->release,
+       pr_info("%s %.*s %s\n", init_utsname()->release,
                (int)strcspn(init_utsname()->version, " "),
                init_utsname()->version,
                print_tainted());
@@ -806,7 +806,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int 
subclass, int force)
        if (verbose(class)) {
                graph_unlock();
 
-               printk("\nnew class %px: %s", class->key, class->name);
+               pr_info("\nnew class %px: %s", class->key, class->name);
                if (class->name_version > 1)
                        printk(KERN_CONT "#%d", class->name_version);
                printk(KERN_CONT "\n");
@@ -1085,7 +1085,7 @@ print_circular_bug_entry(struct lock_list *target, int 
depth)
 {
        if (debug_locks_silent)
                return 0;
-       printk("\n-> #%u", depth);
+       pr_info("\n-> #%u", depth);
        print_lock_name(target->class);
        printk(KERN_CONT ":\n");
        print_stack_trace(&target->trace, 6);
@@ -1116,7 +1116,7 @@ print_circular_lock_scenario(struct held_lock *src,
         * from the safe_class lock to the unsafe_class lock.
         */
        if (parent != source) {
-               printk("Chain exists of:\n  ");
+               pr_info("Chain exists of:\n  ");
                __print_lock_name(source);
                printk(KERN_CONT " --> ");
                __print_lock_name(parent);
@@ -1125,22 +1125,22 @@ print_circular_lock_scenario(struct held_lock *src,
                printk(KERN_CONT "\n\n");
        }
 
-       printk(" Possible unsafe locking scenario:\n\n");
-       printk("       CPU0                    CPU1\n");
-       printk("       ----                    ----\n");
-       printk("  lock(");
+       pr_info(" Possible unsafe locking scenario:\n\n");
+       pr_info("       CPU0                    CPU1\n");
+       pr_info("       ----                    ----\n");
+       pr_info("  lock(");
        __print_lock_name(target);
        printk(KERN_CONT ");\n");
-       printk("                               lock(");
+       pr_info("                               lock(");
        __print_lock_name(parent);
        printk(KERN_CONT ");\n");
-       printk("                               lock(");
+       pr_info("                               lock(");
        __print_lock_name(target);
        printk(KERN_CONT ");\n");
-       printk("  lock(");
+       pr_info("  lock(");
        __print_lock_name(source);
        printk(KERN_CONT ");\n");
-       printk("\n *** DEADLOCK ***\n\n");
+       pr_info("\n *** DEADLOCK ***\n\n");
 }
 
 /*
@@ -1211,13 +1211,13 @@ static noinline int print_circular_bug(struct lock_list 
*this,
                parent = get_lock_parent(parent);
        }
 
-       printk("\nother info that might help us debug this:\n\n");
+       pr_info("\nother info that might help us debug this:\n\n");
        print_circular_lock_scenario(check_src, check_tgt,
                                     first_parent);
 
        lockdep_print_held_locks(curr);
 
-       printk("\nstack backtrace:\n");
+       pr_info("\nstack backtrace:\n");
        dump_stack();
 
        return 0;
@@ -1389,7 +1389,7 @@ static void print_lock_class_header(struct lock_class 
*class, int depth)
 {
        int bit;
 
-       printk("%*s->", depth, "");
+       pr_info("%*s->", depth, "");
        print_lock_name(class);
 #ifdef CONFIG_DEBUG_LOCKDEP
        printk(KERN_CONT " ops: %lu", debug_class_ops_read(class));
@@ -1400,14 +1400,14 @@ static void print_lock_class_header(struct lock_class 
*class, int depth)
                if (class->usage_mask & (1 << bit)) {
                        int len = depth;
 
-                       len += printk("%*s   %s", depth, "", usage_str[bit]);
+                       len += pr_info("%*s   %s", depth, "", usage_str[bit]);
                        len += printk(KERN_CONT " at:\n");
                        print_stack_trace(class->usage_traces + bit, len);
                }
        }
-       printk("%*s }\n", depth, "");
+       pr_info("%*s }\n", depth, "");
 
-       printk("%*s ... key      at: [<%px>] %pS\n",
+       pr_info("%*s ... key      at: [<%px>] %pS\n",
                depth, "", class->key, class->key);
 }
 
@@ -1426,12 +1426,12 @@ print_shortest_lock_dependencies(struct lock_list *leaf,
 
        do {
                print_lock_class_header(entry->class, depth);
-               printk("%*s ... acquired at:\n", depth, "");
+               pr_info("%*s ... acquired at:\n", depth, "");
                print_stack_trace(&entry->trace, 2);
-               printk("\n");
+               pr_info("\n");
 
                if (depth == 0 && (entry != root)) {
-                       printk("lockdep:%s bad path found in chain graph\n", 
__func__);
+                       pr_info("lockdep:%s bad path found in chain graph\n", 
__func__);
                        break;
                }
 
@@ -1469,7 +1469,7 @@ print_irq_lock_scenario(struct lock_list *safe_entry,
         * from the safe_class lock to the unsafe_class lock.
         */
        if (middle_class != unsafe_class) {
-               printk("Chain exists of:\n  ");
+               pr_info("Chain exists of:\n  ");
                __print_lock_name(safe_class);
                printk(KERN_CONT " --> ");
                __print_lock_name(middle_class);
@@ -1478,24 +1478,24 @@ print_irq_lock_scenario(struct lock_list *safe_entry,
                printk(KERN_CONT "\n\n");
        }
 
-       printk(" Possible interrupt unsafe locking scenario:\n\n");
-       printk("       CPU0                    CPU1\n");
-       printk("       ----                    ----\n");
-       printk("  lock(");
+       pr_info(" Possible interrupt unsafe locking scenario:\n\n");
+       pr_info("       CPU0                    CPU1\n");
+       pr_info("       ----                    ----\n");
+       pr_info("  lock(");
        __print_lock_name(unsafe_class);
        printk(KERN_CONT ");\n");
-       printk("                               local_irq_disable();\n");
-       printk("                               lock(");
+       pr_info("                               local_irq_disable();\n");
+       pr_info("                               lock(");
        __print_lock_name(safe_class);
        printk(KERN_CONT ");\n");
-       printk("                               lock(");
+       pr_info("                               lock(");
        __print_lock_name(middle_class);
        printk(KERN_CONT ");\n");
-       printk("  <Interrupt>\n");
-       printk("    lock(");
+       pr_info("  <Interrupt>\n");
+       pr_info("    lock(");
        __print_lock_name(safe_class);
        printk(KERN_CONT ");\n");
-       printk("\n *** DEADLOCK ***\n\n");
+       pr_info("\n *** DEADLOCK ***\n\n");
 }
 
 static int
@@ -1722,17 +1722,17 @@ print_deadlock_scenario(struct held_lock *nxt,
        struct lock_class *next = hlock_class(nxt);
        struct lock_class *prev = hlock_class(prv);
 
-       printk(" Possible unsafe locking scenario:\n\n");
-       printk("       CPU0\n");
-       printk("       ----\n");
-       printk("  lock(");
+       pr_info(" Possible unsafe locking scenario:\n\n");
+       pr_info("       CPU0\n");
+       pr_info("       ----\n");
+       pr_info("  lock(");
        __print_lock_name(prev);
        printk(KERN_CONT ");\n");
-       printk("  lock(");
+       pr_info("  lock(");
        __print_lock_name(next);
        printk(KERN_CONT ");\n");
-       printk("\n *** DEADLOCK ***\n\n");
-       printk(" May be due to missing lock nesting notation\n\n");
+       pr_info("\n *** DEADLOCK ***\n\n");
+       pr_info(" May be due to missing lock nesting notation\n\n");
 }
 
 static int
@@ -2052,7 +2052,7 @@ static u64 print_chain_key_iteration(int class_idx, u64 
chain_key)
 {
        u64 new_chain_key = iterate_chain_key(chain_key, class_idx);
 
-       printk(" class_idx:%d -> chain_key:%016Lx",
+       pr_info(" class_idx:%d -> chain_key:%016Lx",
                class_idx,
                (unsigned long long)new_chain_key);
        return new_chain_key;
@@ -2066,7 +2066,7 @@ print_chain_keys_held_locks(struct task_struct *curr, 
struct held_lock *hlock_ne
        int depth = curr->lockdep_depth;
        int i;
 
-       printk("depth: %u\n", depth + 1);
+       pr_info("depth: %u\n", depth + 1);
        for (i = get_first_held_lock(curr, hlock_next); i < depth; i++) {
                hlock = curr->held_locks + i;
                chain_key = print_chain_key_iteration(hlock->class_idx, 
chain_key);
@@ -2084,13 +2084,13 @@ static void print_chain_keys_chain(struct lock_chain 
*chain)
        u64 chain_key = 0;
        int class_id;
 
-       printk("depth: %u\n", chain->depth);
+       pr_info("depth: %u\n", chain->depth);
        for (i = 0; i < chain->depth; i++) {
                class_id = chain_hlocks[chain->base + i];
                chain_key = print_chain_key_iteration(class_id + 1, chain_key);
 
                print_lock_name(lock_classes + class_id);
-               printk("\n");
+               pr_info("\n");
        }
 }
 
@@ -2269,7 +2269,7 @@ static inline int lookup_chain_cache_add(struct 
task_struct *curr,
                        return 0;
 
                if (very_verbose(class)) {
-                       printk("\nhash chain already cached, key: "
+                       pr_info("\nhash chain already cached, key: "
                                        "%016Lx tail class: [%px] %s\n",
                                        (unsigned long long)chain_key,
                                        class->key, class->name);
@@ -2279,7 +2279,7 @@ static inline int lookup_chain_cache_add(struct 
task_struct *curr,
        }
 
        if (very_verbose(class)) {
-               printk("\nnew hash chain, key: %016Lx tail class: [%px] %s\n",
+               pr_info("\nnew hash chain, key: %016Lx tail class: [%px] %s\n",
                        (unsigned long long)chain_key, class->key, class->name);
        }
 
@@ -2422,17 +2422,17 @@ print_usage_bug_scenario(struct held_lock *lock)
 {
        struct lock_class *class = hlock_class(lock);
 
-       printk(" Possible unsafe locking scenario:\n\n");
-       printk("       CPU0\n");
-       printk("       ----\n");
-       printk("  lock(");
+       pr_info(" Possible unsafe locking scenario:\n\n");
+       pr_info("       CPU0\n");
+       pr_info("       ----\n");
+       pr_info("  lock(");
        __print_lock_name(class);
        printk(KERN_CONT ");\n");
-       printk("  <Interrupt>\n");
-       printk("    lock(");
+       pr_info("  <Interrupt>\n");
+       pr_info("    lock(");
        __print_lock_name(class);
        printk(KERN_CONT ");\n");
-       printk("\n *** DEADLOCK ***\n\n");
+       pr_info("\n *** DEADLOCK ***\n\n");
 }
 
 static int
@@ -2605,17 +2605,17 @@ check_usage_backwards(struct task_struct *curr, struct 
held_lock *this,
 
 void print_irqtrace_events(struct task_struct *curr)
 {
-       printk("irq event stamp: %u\n", curr->irq_events);
-       printk("hardirqs last  enabled at (%u): [<%px>] %pS\n",
+       pr_info("irq event stamp: %u\n", curr->irq_events);
+       pr_info("hardirqs last  enabled at (%u): [<%px>] %pS\n",
                curr->hardirq_enable_event, (void *)curr->hardirq_enable_ip,
                (void *)curr->hardirq_enable_ip);
-       printk("hardirqs last disabled at (%u): [<%px>] %pS\n",
+       pr_info("hardirqs last disabled at (%u): [<%px>] %pS\n",
                curr->hardirq_disable_event, (void *)curr->hardirq_disable_ip,
                (void *)curr->hardirq_disable_ip);
-       printk("softirqs last  enabled at (%u): [<%px>] %pS\n",
+       pr_info("softirqs last  enabled at (%u): [<%px>] %pS\n",
                curr->softirq_enable_event, (void *)curr->softirq_enable_ip,
                (void *)curr->softirq_enable_ip);
-       printk("softirqs last disabled at (%u): [<%px>] %pS\n",
+       pr_info("softirqs last disabled at (%u): [<%px>] %pS\n",
                curr->softirq_disable_event, (void *)curr->softirq_disable_ip,
                (void *)curr->softirq_disable_ip);
 }
@@ -3076,7 +3076,7 @@ static int mark_lock(struct task_struct *curr, struct 
held_lock *this,
         * We must printk outside of the graph_lock:
         */
        if (ret == 2) {
-               printk("\nmarked lock as {%s}:\n", usage_str[new_bit]);
+               pr_info("\nmarked lock as {%s}:\n", usage_str[new_bit]);
                print_lock(this);
                print_irqtrace_events(curr);
                dump_stack();
@@ -3119,7 +3119,7 @@ static void __lockdep_init_map(struct lockdep_map *lock, 
const char *name,
         * Sanity check, the lock-class key must be persistent:
         */
        if (!static_obj(key)) {
-               printk("BUG: key %px not in .data!\n", key);
+               pr_info("BUG: key %px not in .data!\n", key);
                /*
                 * What it says above ^^^^^, I suggest you read it.
                 */
@@ -3232,7 +3232,7 @@ static int __lock_acquire(struct lockdep_map *lock, 
unsigned int subclass,
        debug_class_ops_inc(class);
 
        if (very_verbose(class)) {
-               printk("\nacquire class [%px] %s", class->key, class->name);
+               pr_info("\nacquire class [%px] %s", class->key, class->name);
                if (class->name_version > 1)
                        printk(KERN_CONT "#%d", class->name_version);
                printk(KERN_CONT "\n");
@@ -3759,11 +3759,11 @@ static void check_flags(unsigned long flags)
 
        if (irqs_disabled_flags(flags)) {
                if (DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled)) {
-                       printk("possible reason: unannotated irqs-off.\n");
+                       pr_info("possible reason: unannotated irqs-off.\n");
                }
        } else {
                if (DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)) {
-                       printk("possible reason: unannotated irqs-on.\n");
+                       pr_info("possible reason: unannotated irqs-on.\n");
                }
        }
 
@@ -4258,17 +4258,17 @@ void lockdep_reset_lock(struct lockdep_map *lock)
 
 void __init lockdep_init(void)
 {
-       printk("Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., 
Ingo Molnar\n");
+       pr_info("Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., 
Ingo Molnar\n");
 
-       printk("... MAX_LOCKDEP_SUBCLASSES:  %lu\n", MAX_LOCKDEP_SUBCLASSES);
-       printk("... MAX_LOCK_DEPTH:          %lu\n", MAX_LOCK_DEPTH);
-       printk("... MAX_LOCKDEP_KEYS:        %lu\n", MAX_LOCKDEP_KEYS);
-       printk("... CLASSHASH_SIZE:          %lu\n", CLASSHASH_SIZE);
-       printk("... MAX_LOCKDEP_ENTRIES:     %lu\n", MAX_LOCKDEP_ENTRIES);
-       printk("... MAX_LOCKDEP_CHAINS:      %lu\n", MAX_LOCKDEP_CHAINS);
-       printk("... CHAINHASH_SIZE:          %lu\n", CHAINHASH_SIZE);
+       pr_info("... MAX_LOCKDEP_SUBCLASSES:  %lu\n", MAX_LOCKDEP_SUBCLASSES);
+       pr_info("... MAX_LOCK_DEPTH:          %lu\n", MAX_LOCK_DEPTH);
+       pr_info("... MAX_LOCKDEP_KEYS:        %lu\n", MAX_LOCKDEP_KEYS);
+       pr_info("... CLASSHASH_SIZE:          %lu\n", CLASSHASH_SIZE);
+       pr_info("... MAX_LOCKDEP_ENTRIES:     %lu\n", MAX_LOCKDEP_ENTRIES);
+       pr_info("... MAX_LOCKDEP_CHAINS:      %lu\n", MAX_LOCKDEP_CHAINS);
+       pr_info("... CHAINHASH_SIZE:          %lu\n", CHAINHASH_SIZE);
 
-       printk(" memory used by lock dependency info: %lu kB\n",
+       pr_info(" memory used by lock dependency info: %lu kB\n",
                (sizeof(struct lock_class) * MAX_LOCKDEP_KEYS +
                sizeof(struct list_head) * CLASSHASH_SIZE +
                sizeof(struct lock_list) * MAX_LOCKDEP_ENTRIES +
@@ -4280,7 +4280,7 @@ void __init lockdep_init(void)
                ) / 1024
                );
 
-       printk(" per task-struct memory footprint: %lu bytes\n",
+       pr_info(" per task-struct memory footprint: %lu bytes\n",
                sizeof(struct held_lock) * MAX_LOCK_DEPTH);
 }
 
@@ -4403,7 +4403,7 @@ EXPORT_SYMBOL_GPL(debug_show_all_locks);
 void debug_show_held_locks(struct task_struct *task)
 {
        if (unlikely(!debug_locks)) {
-               printk("INFO: lockdep is turned off.\n");
+               pr_info("INFO: lockdep is turned off.\n");
                return;
        }
        lockdep_print_held_locks(task);
-- 
2.7.4

Reply via email to