From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH net-next] net: sched: act_ife: disable bh when taking ife_mod_lock Date: Mon, 13 Aug 2018 11:45:55 -0700 (PDT) Message-ID: <20180813.114555.1873070794330907327.davem@davemloft.net> References: <1534180811-10416-1-git-send-email-vladbu@mellanox.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, jhs@mojatatu.com, xiyou.wangcong@gmail.com, jiri@resnulli.us To: vladbu@mellanox.com Return-path: Received: from shards.monkeyblade.net ([23.128.96.9]:56924 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730195AbeHMV3V (ORCPT ); Mon, 13 Aug 2018 17:29:21 -0400 In-Reply-To: <1534180811-10416-1-git-send-email-vladbu@mellanox.com> Sender: netdev-owner@vger.kernel.org List-ID: From: Vlad Buslov Date: Mon, 13 Aug 2018 20:20:11 +0300 > Lockdep reports deadlock for following locking scenario in ife action: > > Task one: > 1) Executes ife action update. > 2) Takes tcfa_lock. > 3) Waits on ife_mod_lock which is already taken by task two. > > Task two: > > 1) Executes any path that obtains ife_mod_lock without disabling bh (any > path that takes ife_mod_lock while holding tcfa_lock has bh disabled) like > loading a meta module, or creating new action. > 2) Takes ife_mod_lock. > 3) Task is preempted by rate estimator timer. > 4) Timer callback waits on tcfa_lock which is taken by task one. > > In described case tasks deadlock because they take same two locks in > different order. To prevent potential deadlock reported by lockdep, always > disable bh when obtaining ife_mod_lock. > > Lockdep warning: ... > Fixes: ef6980b6becb ("introduce IFE action") > Signed-off-by: Vlad Buslov Applied and queued up for -stable, thanks.