Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=000f4a9e718a665fd706500199a3f0c11fea30c1
Commit:     000f4a9e718a665fd706500199a3f0c11fea30c1
Parent:     bc84cf17b50ca5b49bec0a5fef63c58c1526d46b
Author:     Peter Zijlstra <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 26 20:42:19 2007 +0100
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Mon Nov 26 20:42:19 2007 +0100

    lockdep: annotate do_debug() trap handler
    
    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: Peter Zijlstra <[EMAIL PROTECTED]>
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
---
 arch/x86/kernel/traps_32.c |    2 ++
 arch/x86/kernel/traps_64.c |    2 ++
 2 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/arch/x86/kernel/traps_32.c b/arch/x86/kernel/traps_32.c
index 0a4c893..ef60102 100644
--- a/arch/x86/kernel/traps_32.c
+++ b/arch/x86/kernel/traps_32.c
@@ -833,6 +833,8 @@ fastcall void __kprobes do_debug(struct pt_regs * regs, 
long error_code)
        unsigned int condition;
        struct task_struct *tsk = current;
 
+       trace_hardirqs_fixup();
+
        get_debugreg(condition, 6);
 
        if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code,
diff --git a/arch/x86/kernel/traps_64.c b/arch/x86/kernel/traps_64.c
index 1384e34..d11525a 100644
--- a/arch/x86/kernel/traps_64.c
+++ b/arch/x86/kernel/traps_64.c
@@ -853,6 +853,8 @@ asmlinkage void __kprobes do_debug(struct pt_regs * regs,
        struct task_struct *tsk = current;
        siginfo_t info;
 
+       trace_hardirqs_fixup();
+
        get_debugreg(condition, 6);
 
        if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code,
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to