> > >------- Original Message ------- > >Sender : Cong Wang<xiyou.wangc...@gmail.com> > >Date : 2014-03-29 13:23 (GMT+09:00) > >Title : Re: latest 3.14.0-rc8+ : "INFO: inconsistent lock state " > > > >On Fri, Mar 28, 2014 at 8:21 PM, Jongman Heo wrote: >> >> Hi, guys, >> >> With today's linus git tree, I got following messages; >> >> [ 97.426196] ================================= >> [ 97.426198] [ INFO: inconsistent lock state ] >> [ 97.426221] 3.14.0-rc8+ #45 Tainted: G W >> [ 97.426224] --------------------------------- >> [ 97.426227] inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage. >> [ 97.426229] kworker/7:1/101 [HC0[0]:SC0[0]:HE1:SE1] takes: >> [ 97.426231] (&addrconf_stats->syncp.seq){+.?...}, at: [] >> mld_send_initial_cr.part.30+0x81/0xa0 >> [ 97.426255] {IN-SOFTIRQ-W} state was registered at: >> [ 97.426258] [] __lock_acquire+0x414/0x18e0 >> [ 97.426265] [] lock_acquire+0x98/0x120 >> [ 97.426268] [] mld_sendpack+0xdf/0x5b0 >> [ 97.426270] [] mld_ifc_timer_expire+0x191/0x2c0 >> [ 97.426272] [] call_timer_fn+0x75/0x160 >> [ 97.426276] [] run_timer_softirq+0x192/0x230 >> [ 97.426281] [] __do_softirq+0xfb/0x2b0 >> [ 97.426286] irq event stamp: 33365 >> [ 97.426289] hardirqs last enabled at (33365): [] >> __local_bh_enable_ip+0x6b/0xc0 >> [ 97.426292] hardirqs last disabled at (33363): [] __do_softirq+0x145/0x2b0 >> [ 97.426294] softirqs last enabled at (33364): [] __do_softirq+0x1a4/0x2b0 >> [ 97.426297] softirqs last disabled at (33341): [] >> do_softirq_own_stack+0x35/0x40 >> [ 97.426303] >> other info that might help us debug this: >> [ 97.426305] Possible unsafe locking scenario: >> >> [ 97.426306] CPU0 >> [ 97.426307] ---- >> [ 97.426308] lock(&addrconf_stats->syncp.seq); >> [ 97.426310] >> [ 97.426311] lock(&addrconf_stats->syncp.seq); >> [ 97.426313] >> *** DEADLOCK *** > >Does the following patch help? > >diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c >index e1e4735..74a774a 100644 >--- a/net/ipv6/mcast.c >+++ b/net/ipv6/mcast.c >@@ -1588,7 +1588,7 @@ static void mld_sendpack(struct sk_buff *skb) > > rcu_read_lock(); > idev = __in6_dev_get(skb->dev); >- IP6_UPD_PO_STATS(net, idev, IPSTATS_MIB_OUT, skb->len); >+ IP6_UPD_PO_STATS_BH(net, idev, IPSTATS_MIB_OUT, skb->len); > > payload_len = (skb_tail_pointer(skb) - skb_network_header(skb)) - > sizeof(*pip6); > > >
Hi, No, it doesn't fix the issue. Regards, Jongman Heo.