From patchwork Fri Jan 9 11:14:06 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Kazior X-Patchwork-Id: 5599031 Return-Path: X-Original-To: patchwork-ath10k@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id DEC4C9F1C5 for ; Fri, 9 Jan 2015 11:15:25 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 0B09220524 for ; Fri, 9 Jan 2015 11:15:25 +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 03F1B204FB for ; Fri, 9 Jan 2015 11:15:24 +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 1Y9XXD-0007nE-69; Fri, 09 Jan 2015 11:15:19 +0000 Received: from mail-we0-x231.google.com ([2a00:1450:400c:c03::231]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1Y9XX6-0006Uq-Od for ath10k@lists.infradead.org; Fri, 09 Jan 2015 11:15:13 +0000 Received: by mail-we0-f177.google.com with SMTP id q59so7352390wes.8 for ; Fri, 09 Jan 2015 03:14:50 -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=wEPWxEK7RLeRPWw1Ym13n2FwPA8VDv39RECFOASZS6o=; b=PAqJ/a1zYyuUQnilhJ3Kcn1HjYlfDvw5dTtGOi4cqskvzdpWEnv226STCyX8dAvL+C qHu2Ofrya4UTG4K5a+W5yFen60YsVfuTboaCJP4blxUUbBehKoTHsOS/BxBFPuicWgoc ysVfqr+06ntavkWyAGQIysd+9/Ur5Ozd628SE= 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=wEPWxEK7RLeRPWw1Ym13n2FwPA8VDv39RECFOASZS6o=; b=UCT5olIGW7Dz1eBxyY+4yKVOK2Ozd1Z12IIdpQrFWEwoX02XhPdo00TBssaUxtpN91 sLMhRIDVQqmTSCVcOFBxp94tUzUhhmnk51kwDY5ZM4wmYCxd7C2f/ensdG/lyNaArVs0 htEnGWk0Z7DeQdkXgw166N2Su5j2Agq2efaTU2IruS74ziNUaL8PdCiPl+iU5Gd0Nm3q na6KiEr4N8jlmwEyaONE5JrMMhXyd5HcuXyz950XMJIt3yTZOFWTazDBFwb6VXm99GAr PmeLzIykUQy8LGRp/3heQx0FbW+b5jmtkbJSnbJ9fYUWGKl7qg0dt8IimbLnXNecgEsc o9Cw== X-Gm-Message-State: ALoCoQlVDsgkH0BonsRqi8NzeDw3Ontxu5VglZkKWqWlJzYYXMmZia2fI+d+u/3XXdLDOEvVVHvQclCgb00M2tYGgAS5CcemjuLUGQ9PHIBHvMRzY9SrDVXCJtBcfALqXxdc0ixnl9E72lsTQjss43iQMxHpRXTxmyy7n1Y+SbPG1PwT1DNZR1w= X-Received: by 10.180.206.229 with SMTP id lr5mr3967293wic.74.1420802089722; Fri, 09 Jan 2015 03:14:49 -0800 (PST) Received: from localhost.localdomain ([91.198.246.8]) by mx.google.com with ESMTPSA id gb10sm9612608wjb.21.2015.01.09.03.14.49 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Jan 2015 03:14:49 -0800 (PST) From: Michal Kazior To: ath10k@lists.infradead.org Subject: [RFC 5/8] ath10k: protect ar->arvifs linking with data_lock Date: Fri, 9 Jan 2015 12:14:06 +0100 Message-Id: <1420802049-11962-6-git-send-email-michal.kazior@tieto.com> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: <1420802049-11962-1-git-send-email-michal.kazior@tieto.com> References: <1420802049-11962-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-20150109_031513_000316_FF574F88 X-CRM114-Status: UNSURE ( 7.52 ) 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 b175827..fed8cc9 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -3283,7 +3283,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); vdev_param = ar->wmi.vdev_param->def_keyid; ret = ath10k_wmi_vdev_set_param(ar, 0, vdev_param, @@ -3400,7 +3403,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) { @@ -3435,7 +3440,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_wmi_peer_delete(arvif->ar, arvif->vdev_id,