From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hariprasad S Subject: Re: [PATCH] cxgb4: disable BH when hold the adap_rcu_lock lock Date: Thu, 19 Jun 2014 19:25:00 +0530 Message-ID: <20140619135500.GA25925@hariprasad-pc> References: <53A0DDF5.80103@candelatech.com> <1403168810-9001-1-git-send-email-roy.qing.li@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Cc: , , To: Return-path: Received: from 99-65-72-228.uvs.sntcca.sbcglobal.net ([99.65.72.228]:32577 "EHLO stargate.chelsio.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932490AbaFSOzZ (ORCPT ); Thu, 19 Jun 2014 10:55:25 -0400 Content-Disposition: inline In-Reply-To: <1403168810-9001-1-git-send-email-roy.qing.li@gmail.com> Sender: netdev-owner@vger.kernel.org List-ID: On Thu, Jun 19, 2014 at 17:06:50 +0800, roy.qing.li@gmail.com wrote: > From: Li RongQing > > This lock is used in BH enabled condition and softirq context, so need to > disable BH to avoid the dead lock: > ================================= > [ INFO: inconsistent lock state ] > 3.14.7+ #24 Tainted: G C O > --------------------------------- > inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage. > radvd/3794 [HC0[0]:SC1[1]:HE1:SE0] takes: > (adap_rcu_lock){+.?...}, at: [] clip_add+0x2c/0x116 [cxgb4] > {SOFTIRQ-ON-W} state was registered at: > [] __lock_acquire+0x34a/0xe48 > [] lock_acquire+0x82/0x9d > [] _raw_spin_lock+0x34/0x43 > [] clip_add+0x2c/0x116 [cxgb4] > [] cxgb4_inet6addr_handler+0x117/0x12c [cxgb4] > [] notifier_call_chain+0x32/0x5c > [] __atomic_notifier_call_chain+0x44/0x6e > [] atomic_notifier_call_chain+0xf/0x11 > [] inet6addr_notifier_call_chain+0x16/0x18 > [] ipv6_add_addr+0x404/0x46e [ipv6] > [] addrconf_add_linklocal+0x5f/0x95 [ipv6] > [] addrconf_notify+0x632/0x841 [ipv6] > [] notifier_call_chain+0x32/0x5c > [] __raw_notifier_call_chain+0x9/0xb > [] raw_notifier_call_chain+0xf/0x11 > [] call_netdevice_notifiers_info+0x4e/0x56 > [] call_netdevice_notifiers+0x11/0x13 > [] netdev_state_change+0x1f/0x38 > [] linkwatch_do_dev+0x3b/0x49 > [] __linkwatch_run_queue+0x10b/0x144 > [] linkwatch_event+0x20/0x27 > [] process_one_work+0x1cb/0x2ee > [] worker_thread+0x12e/0x1fc > [] kthread+0xc4/0xcc > [] ret_from_fork+0x7c/0xb0 > irq event stamp: 3388 > hardirqs last enabled at (3388): [] __local_bh_enable_ip+0xaa/0xd9 > hardirqs last disabled at (3387): [] __local_bh_enable_ip+0x52/0xd9 > softirqs last enabled at (3288): [] rcu_read_unlock_bh+0x0/0x2f [ipv6] > softirqs last disabled at (3289): [] do_softirq_own_stack+0x1c/0x30 > > other info that might help us debug this: > Possible unsafe locking scenario: > > CPU0 > ---- > lock(adap_rcu_lock); > > lock(adap_rcu_lock); > > *** DEADLOCK *** > > Reported-by: Ben Greear > Signed-off-by: Li RongQing > Cc: Casey Leedom > Cc: Hariprasad Shenai > --- Acked-by: Hariprasad Shenai Thanks