From patchwork Mon Jun 27 11:22:49 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Kazior X-Patchwork-Id: 9200373 X-Patchwork-Delegate: johannes@sipsolutions.net Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A312F60752 for ; Mon, 27 Jun 2016 11:21:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 935E127F99 for ; Mon, 27 Jun 2016 11:21:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 87A972857A; Mon, 27 Jun 2016 11:21:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EBD2E27F99 for ; Mon, 27 Jun 2016 11:21:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751860AbcF0LVR (ORCPT ); Mon, 27 Jun 2016 07:21:17 -0400 Received: from mail-lf0-f44.google.com ([209.85.215.44]:33814 "EHLO mail-lf0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751742AbcF0LVQ (ORCPT ); Mon, 27 Jun 2016 07:21:16 -0400 Received: by mail-lf0-f44.google.com with SMTP id h129so154253099lfh.1 for ; Mon, 27 Jun 2016 04:21:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tieto.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yUeqY56Sxv7z82x822l0wEo4oHzR1xNxhrtdCFJ9N28=; b=pGoC0v/X5QNcgQvPGp3lNPzbSI1Pj0UA4DvWtZ3nEvEJQmjnFndAREhW82Qt7tQKav sl66cjDPZJ++tLWcHIURdoXPuCALr+3UHQEN5N7COhQZP5l0icnsLgozwLey7Xd1vdQ0 bjCkAiJRwdDVIc+pFVnQ8fthgJ+Y5XOry1ndI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=yUeqY56Sxv7z82x822l0wEo4oHzR1xNxhrtdCFJ9N28=; b=KZ7uM4qRtwLTq7lo2sNbK94lITjBC0qzaHzbsuPJJ0GxALpSJ/8a1W8xG7JUUXYCNz rzyO6T2y8adIv0SZndxi0vm/jX9vNa4CWQxH38GA1T6VkWAOdt0NBMb1RW3W5ycG0KCp cY4LdQDRGQgtbKGXPsz7PYKnu+QIbGkhOPj7kg/bKTH5OozMQwOwiq5Um/1OabfTqObq 2EONSVNwyIxAOSXdq/Lylr5XzoJfL1fQZofq3qZ/yKx+DVSNKD6C/wS+ur5ftu2fns5J gFO56eCOqEMo72vcylL7FMNfccvliIAQHhHq7wRvC1HKSBJw4Yvtxt+98M0RzpRas/Pd wVEg== X-Gm-Message-State: ALyK8tK/Gko92uBUIDCghOWHPThhqXqpehiglYa/RqncYga+sbpkI7Amel+PLsvbllMvQV4RPQHckVph9J/YKxDtljgX4psUHbdl5GrZkj3R6/4xttavHw+rI+WFxlYUaaPeems64RhwHQ== X-Received: by 10.46.33.226 with SMTP id h95mr4972700lji.35.1467026474613; Mon, 27 Jun 2016 04:21:14 -0700 (PDT) Received: from localhost.localdomain ([91.198.246.8]) by smtp.gmail.com with ESMTPSA id 70sm3202751lfp.34.2016.06.27.04.21.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 27 Jun 2016 04:21:13 -0700 (PDT) From: Michal Kazior To: kvalo@qca.qualcomm.com Cc: ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, Michal Kazior Subject: [RFT] mac80211: fix fq lockdep warnings Date: Mon, 27 Jun 2016 13:22:49 +0200 Message-Id: <1467026569-19329-1-git-send-email-michal.kazior@tieto.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <878txzo7c6.fsf@kamboji.qca.qualcomm.com> References: <878txzo7c6.fsf@kamboji.qca.qualcomm.com> X-DomainID: tieto.com Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Some lockdep assertions were not fulfilled and resulted in a kernel warning/call trace. Existing code sequences should've guranteed safety but it's always good to be extra careful. The call trace could look like this: [ 237.335805] ------------[ cut here ]------------ [ 237.335852] WARNING: CPU: 3 PID: 1921 at include/net/fq_impl.h:22 fq_flow_dequeue+0xed/0x140 [mac80211] [ 237.335855] Modules linked in: ath10k_pci(E-) ath10k_core(E) ath(E) mac80211(E) cfg80211(E) [ 237.335913] CPU: 3 PID: 1921 Comm: rmmod Tainted: G W E 4.7.0-rc4-wt-ath+ #1377 [ 237.335916] Hardware name: Hewlett-Packard HP ProBook 6540b/1722, BIOS 68CDD Ver. F.04 01/27/2010 [ 237.335918] 00200286 00200286 eff85dac c14151e2 f901574e 00000000 eff85de0 c1081075 [ 237.335928] c1ab91f0 00000003 00000781 f901574e 00000016 f8fbabad f8fbabad 00000016 [ 237.335938] eb24ff60 00000000 ef3886c0 eff85df4 c10810ba 00000009 00000000 00000000 [ 237.335948] Call Trace: [ 237.335953] [] dump_stack+0x76/0xb4 [ 237.335957] [] __warn+0xe5/0x100 [ 237.336002] [] ? fq_flow_dequeue+0xed/0x140 [mac80211] [ 237.336046] [] ? fq_flow_dequeue+0xed/0x140 [mac80211] [ 237.336053] [] warn_slowpath_null+0x2a/0x30 [ 237.336095] [] fq_flow_dequeue+0xed/0x140 [mac80211] [ 237.336137] [] fq_flow_reset.constprop.56+0x2a/0x90 [mac80211] [ 237.336180] [] fq_reset.constprop.59+0x2a/0x50 [mac80211] [ 237.336222] [] ieee80211_txq_teardown_flows+0x38/0x40 [mac80211] [ 237.336258] [] ieee80211_unregister_hw+0xe4/0x120 [mac80211] [ 237.336275] [] ath10k_mac_unregister+0x16/0x50 [ath10k_core] [ 237.336292] [] ath10k_core_unregister+0x3d/0x90 [ath10k_core] [ 237.336301] [] ath10k_pci_remove+0x36/0xa0 [ath10k_pci] [ 237.336307] [] pci_device_remove+0x38/0xb0 ... Fixes: 5caa328e3811 ("mac80211: implement codel on fair queuing flows") Fixes: fa962b92120b ("mac80211: implement fair queueing per txq") Reported-by: Valo, Kalle Signed-off-by: Michal Kazior Tested-by: Kalle Valo --- Hi Kalle, Can you verify this fixes call traces you're seeing, please? net/mac80211/tx.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 44ec605a5682..1975c22132c6 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -1445,7 +1445,9 @@ int ieee80211_txq_setup_flows(struct ieee80211_local *local) local->cvars = kcalloc(fq->flows_cnt, sizeof(local->cvars[0]), GFP_KERNEL); if (!local->cvars) { + spin_lock_bh(&fq->lock); fq_reset(fq, fq_skb_free_func); + spin_unlock_bh(&fq->lock); return -ENOMEM; } @@ -1465,7 +1467,9 @@ void ieee80211_txq_teardown_flows(struct ieee80211_local *local) kfree(local->cvars); local->cvars = NULL; + spin_lock_bh(&fq->lock); fq_reset(fq, fq_skb_free_func); + spin_unlock_bh(&fq->lock); } struct sk_buff *ieee80211_tx_dequeue(struct ieee80211_hw *hw,