From: Dave Jones <[EMAIL PROTECTED]> Date: Mon, 31 Jul 2006 16:50:04 -0400
> 2.6.18rc2-gitSomething on my firewall box just triggered this.. Lockdep is perhaps confused. > [515613.904945] swapper/0 is trying to acquire lock: > [515613.931489] (&tbl->lock){-+-+}, at: [<c05b5d63>] neigh_lookup+0x50/0xaf > [515613.964369] > [515613.964373] but task is already holding lock: > [515614.006550] (&skb_queue_lock_key){-+..}, at: [<c05b741c>] > neigh_proxy_process+0x20/0xc2 The skb_queue_lock in question is &tbl->proxy_queue.lock > [515614.103459] the existing dependency chain (in reverse order) is: > [515614.148752] > [515614.148755] -> #2 (&skb_queue_lock_key){-+..}: > [515614.188880] [<c043bf43>] lock_acquire+0x4b/0x6c > [515614.215554] [<c06089a7>] _spin_lock_irqsave+0x22/0x32 > [515614.243606] [<c05ac2e3>] skb_dequeue+0x12/0x43 > [515614.269657] [<c05acffe>] skb_queue_purge+0x14/0x1b > [515614.296565] [<c05b673e>] neigh_update+0x317/0x353 This is a different queue lock, namely &neigh->arp_queue.lock Like the ipv6 trace we got yesterday from Matt Domsche, lockdep is aparently confusing two instances of the skb_queue_lock_key > [515614.677724] -> #0 (&tbl->lock){-+-+}: > [515614.707327] [<c043bf43>] lock_acquire+0x4b/0x6c > [515614.729897] [<c060878a>] _read_lock_bh+0x1e/0x2d > [515614.752546] [<c05b5d63>] neigh_lookup+0x50/0xaf > [515614.774754] [<c05b6e5e>] neigh_event_ns+0x2c/0x77 > [515614.797271] [<c05e88c7>] arp_process+0x366/0x4e4 > [515614.819349] [<c05e8b3e>] parp_redo+0x8/0xa > [515614.839660] [<c05b7462>] neigh_proxy_process+0x66/0xc2 > [515614.862931] [<c042db48>] run_timer_softirq+0x108/0x167 > [515614.886048] [<c04293d5>] __do_softirq+0x78/0xf2 > [515614.907136] [<c040662f>] do_softirq+0x5a/0xbe > [515614.927553] And this path takes &neigh->proxy_queue.lock, then &tbl->lock I don't see the problem. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html