locking/lockdep: Remove the unnecessary trace saving
authorBoqun Feng <boqun.feng@gmail.com>
Fri, 18 Jun 2021 17:01:08 +0000 (01:01 +0800)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 22 Jun 2021 14:42:07 +0000 (16:42 +0200)
In print_bad_irq_dependency(), save_trace() is called to set the ->trace
for @prev_root as the current call trace, however @prev_root corresponds
to the the held lock, which may not be acquired in current call trace,
therefore it's wrong to use save_trace() to set ->trace of @prev_root.
Moreover, with our adjustment of printing backwards dependency path, the
->trace of @prev_root is unncessary, so remove it.

Reported-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210618170110.3699115-3-boqun.feng@gmail.com
kernel/locking/lockdep.c

index 3b32cd9cdfd058e98c0acdc2d4438ca017c53c2c..74d084a398be9219c9396d1d2affb89a990d0597 100644 (file)
@@ -2550,9 +2550,6 @@ print_bad_irq_dependency(struct task_struct *curr,
        lockdep_print_held_locks(curr);
 
        pr_warn("\nthe dependencies between %s-irq-safe lock and the holding lock:\n", irqclass);
-       prev_root->trace = save_trace();
-       if (!prev_root->trace)
-               return;
        print_shortest_lock_dependencies_backwards(backwards_entry, prev_root);
 
        pr_warn("\nthe dependencies between the lock to be acquired");