• Peter Zijlstra's avatar
    lockdep: annotate do_debug() trap handler · 000f4a9e
    Peter Zijlstra authored
    Ensure the hardirq state is consistent before using locks. Use the rare
    trace_hardirqs_fixup() because the trap can happen in any context.
    
    resolves this rare lockdep warning:
    
    WARNING: at kernel/lockdep.c:2658 check_flags()
     [<c013571e>] check_flags+0x90/0x140
     [<c0138a69>] lock_release+0x4b/0x1d0
     [<c0507fea>] notifier_call_chain+0x2a/0x47
     [<c050806b>] __atomic_notifier_call_chain+0x64/0x6d
     [<c0508007>] __atomic_notifier_call_chain+0x0/0x6d
     [<c050808b>] atomic_notifier_call_chain+0x17/0x1a
     [<c0131802>] notify_die+0x30/0x34
     [<c0506b09>] do_debug+0x3e/0xd4
     [<c050658f>] debug_stack_correct+0x27/0x2c
     [<c04be389>] tcp_rcv_established+0x1/0x620
     [<c04c38c2>] tcp_v4_do_rcv+0x2b/0x313
     [<c04c56b6>] tcp_v4_rcv+0x467/0x85d
     [<c0505ff2>] _spin_lock_nested+0x27/0x32
     [<c04c5a4d>] tcp_v4_rcv+0x7fe/0x85d
     [<c04c560e>] tcp_v4_rcv+0x3bf/0x85d
     [<c04adbb5>] ip_local_deliver_finish+0x11b/0x1b0
     [<c04adac8>] ip_local_deliver_finish+0x2e/0x1b0
     [<c04ada7b>] ip_rcv_finish+0x27b/0x29a
     [<c04961e5>] netif_receive_skb+0xfb/0x2a6
     [<c04add0f>] ip_rcv+0x0/0x1fb
     [<c0496354>] netif_receive_skb+0x26a/0x2a6
     [<c04961e5>] netif_receive_skb+0xfb/0x2a6
     [<c049872e>] process_backlog+0x7f/0xc6
     [<c04983ba>] net_rx_action+0xb9/0x1ac
     [<c0498348>] net_rx_action+0x47/0x1ac
     [<c01376cb>] trace_hardirqs_on+0x118/0x16b
     [<c01225e2>] __do_softirq+0x49/0xa2
     [<c010595f>] do_softirq+0x60/0xdd
     [<c0506300>] _spin_unlock_irq+0x20/0x2c
     [<c0103e4f>] restore_nocheck+0x12/0x15
     [<c01440e1>] handle_fasteoi_irq+0x0/0x9b
     [<c0105a70>] do_IRQ+0x94/0xaa
     [<c0506300>] _spin_unlock_irq+0x20/0x2c
     [<c0104832>] common_interrupt+0x2e/0x34
     [<c0114703>] native_safe_halt+0x2/0x3
     [<c0102c01>] default_idle+0x44/0x65
     [<c010257f>] cpu_idle+0x42/0x50
     [<c076ea09>] start_kernel+0x26b/0x270
     [<c076e317>] unknown_bootoption+0x0/0x196
     =======================
    irq event stamp: 559190
    hardirqs last  enabled at (559190): [<c0507316>] kprobe_exceptions_notify+0x299/0x305
    hardirqs last disabled at (559189): [<c05067bf>] do_int3+0x1d/0x95
    softirqs last  enabled at (559172): [<c010595f>] do_softirq+0x60/0xdd
    softirqs last disabled at (559181): [<c010595f>] do_softirq+0x60/0xdd
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    000f4a9e
traps_64.c 28.7 KB