From patchwork Fri Jan 30 08:41:24 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Kazior X-Patchwork-Id: 5747741 Return-Path: X-Original-To: patchwork-ath10k@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id C6175BF440 for ; Fri, 30 Jan 2015 08:43:27 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 444BE2024D for ; Fri, 30 Jan 2015 08:43:26 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 832BF201CE for ; Fri, 30 Jan 2015 08:43:25 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1YH7Af-0002hK-Ol; Fri, 30 Jan 2015 08:43:21 +0000 Received: from mail-wi0-x233.google.com ([2a00:1450:400c:c05::233]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1YH7Aa-0002XH-Hl for ath10k@lists.infradead.org; Fri, 30 Jan 2015 08:43:17 +0000 Received: by mail-wi0-f179.google.com with SMTP id l15so1243218wiw.0 for ; Fri, 30 Jan 2015 00:42:53 -0800 (PST) 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=FvEn9Iqr/mD4lCyDaGJn5N3MkGFXfA6dzHRTm5h/G5w=; b=aIlFvFPvpS8MxELtk0uwF7fyX28qv9qIkoJxKAE/Sl8/c/sKZ9PGe/mbi9nXsBTRi1 6d2RPtJtgjB4fskck4UVCdcavTxcPJS3QJr10zdhs876OQqRR67JtA46OstAZJZhwWpy 5o8RLVb4rmQiWkiuRWAOZ27e/U413mKf5hQhc= 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=FvEn9Iqr/mD4lCyDaGJn5N3MkGFXfA6dzHRTm5h/G5w=; b=TRHWho9c5XxAq9OZReAHhb2QBsbh7D/+SxIpa6l7VoQpWw1qMpfNZd2oHcDaIbH8wd YYiNgyJyJh03niDkVXDOdo6r49a0jJVlliefgMAfkFjpOG1sDyWY0Xgzz7kuf6uhkaNE JlmiXi/jroUpVUBLmrks/U+PTdSM5Yaphv7aL7juev5d+JgX2YZORRei7VvHqW+yDrqG 2FxMMiND7pPxFC0jokOtsrfXd8dF0c+l0OIMwcJb2CD8BT/FQU/T2eFM5rpr8HTiVzlG qNpP1FECvot9hXoTARh6huGY/zgD9gjZeFTyBwwjhSn7oiL/8DksUP5/asiX/ilwcGUt wbJA== X-Gm-Message-State: ALoCoQkUSYy2fSuksGvjYJsJOFdgch3a9vQG92FOFkWq7zq2TdPnfZr57CbNrsUjENE62/zGpUgEVXeuY6ov9Z3WctHi63kEjaaNKpEuHX+N2eFhgx4N+nKDdEYWcMpcZiQoiLd4dhmjKRs97yflYj0HIlChMviED3O1UlV8bPWGltrxX4uUHQk= X-Received: by 10.194.172.227 with SMTP id bf3mr618758wjc.124.1422607368632; Fri, 30 Jan 2015 00:42:48 -0800 (PST) Received: from bob.homerouter.cpe (apn-31-1-134-151.dynamic.gprs.plus.pl. [31.1.134.151]) by mx.google.com with ESMTPSA id i3sm5884655wie.23.2015.01.30.00.42.47 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Jan 2015 00:42:48 -0800 (PST) From: Michal Kazior To: ath10k@lists.infradead.org Subject: [PATCH 4/7] ath10k: protect ar->arvifs linking with data_lock Date: Fri, 30 Jan 2015 09:41:24 +0100 Message-Id: <1422607287-12289-5-git-send-email-michal.kazior@tieto.com> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: <1422607287-12289-1-git-send-email-michal.kazior@tieto.com> References: <1422607287-12289-1-git-send-email-michal.kazior@tieto.com> X-DomainID: tieto.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150130_004316_771006_F40FE295 X-CRM114-Status: UNSURE ( 7.80 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.8 (/) Cc: linux-wireless@vger.kernel.org, Michal Kazior X-BeenThere: ath10k@lists.infradead.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This will make it possible to iterate over interface list while in an atomic context, i.e. tasklet. Caller should still be careful with accessing arvif structures though. Signed-off-by: Michal Kazior --- drivers/net/wireless/ath/ath10k/mac.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 16fddc7..721b2ce 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -3325,7 +3325,10 @@ static int ath10k_add_interface(struct ieee80211_hw *hw, } ar->free_vdev_map &= ~(1LL << arvif->vdev_id); + + spin_lock_bh(&ar->data_lock); list_add(&arvif->list, &ar->arvifs); + spin_unlock_bh(&ar->data_lock); /* It makes no sense to have firmware do keepalives. mac80211 already * takes care of this with idle connection polling. @@ -3452,7 +3455,9 @@ err_peer_delete: err_vdev_delete: ath10k_wmi_vdev_delete(ar, arvif->vdev_id); ar->free_vdev_map |= 1LL << arvif->vdev_id; + spin_lock_bh(&ar->data_lock); list_del(&arvif->list); + spin_unlock_bh(&ar->data_lock); err: if (arvif->beacon_buf) { @@ -3487,7 +3492,10 @@ static void ath10k_remove_interface(struct ieee80211_hw *hw, arvif->vdev_id, ret); ar->free_vdev_map |= 1LL << arvif->vdev_id; + + spin_lock_bh(&ar->data_lock); list_del(&arvif->list); + spin_unlock_bh(&ar->data_lock); if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { ret = ath10k_peer_delete(arvif->ar, arvif->vdev_id, vif->addr);