Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp1363706imm; Tue, 2 Oct 2018 07:07:45 -0700 (PDT) X-Google-Smtp-Source: ACcGV61WhQWBuRkBfSZUhnJeyIWKCGlSlCoBsDnIeToQCoeqcCv08ix/SHt8tySJuCIwMwZoy4Ac X-Received: by 2002:a63:5558:: with SMTP id f24-v6mr14788403pgm.37.1538489265796; Tue, 02 Oct 2018 07:07:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538489265; cv=none; d=google.com; s=arc-20160816; b=RdDm4dRFmrQoDJbt12w3heZK9AnWrqNBMdVaj9RQGFVIuueltc1SphtKiLqr9NQ1FX 1Il4nSYZhEPRobPngL/Y2Pxtu38qpVxf0wTl1QjlE57hggo20VHglyCCVu2b0eZ3VAe4 XmaR+0RyI8hcyYTAYG5A8rK3rDtRIipSMUhnAEhWohvWqcHJpkcjXUI2FUu9IO9hZiwD mFngQ7Rjms8jhFH+WqQD27/2xGOOGj9Ygjf9reXs1YFMbEqWjNnj5jRAQ46PMvRc6svz +bQbbPsvBBBC7JYtFLonORCoeWIcVw92Za9oMu8fvcXcrgzssFOuGgmmERlvtWPCJXSY +c1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from; bh=vlOT4RIvKcAaWJT8u/lW8hocDFCxcS1uUjxAhWVR5wg=; b=c75paIWO/lw3NEqNCSNPQEU7lcZBmP+/BdVw4+mdBA+EhtJ9keRaeW5iHnDgJZ+c6Z HmpfwjzqLjrPAPBD0nO+1jni0DOo/Ks/BmpHdgnRDLYAPoZx5w9D4cFUhVQlmKQKKfVk BntTW2Mu+GXvjGbbbbMan+lvrCa8wLGK4IZ0E12I1nP5j/cZcvqhFEvhyBb7+bakatn7 hK1ezvjTvxagB74cGBchT45mWUl3d8uW0rLg9IrqMkQ6JKTZtDUGBGl2VMGQ7XfZEgVY vMexkmfYjG4NYjwnWhNW8hP7og+mjJpvQVHrwkaPzczXqaTApJxezB0C6DytZs+HYkMn rA7Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j6-v6si6960844plk.145.2018.10.02.07.07.30; Tue, 02 Oct 2018 07:07:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729545AbeJBUMG (ORCPT + 99 others); Tue, 2 Oct 2018 16:12:06 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:32850 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726993AbeJBUMG (ORCPT ); Tue, 2 Oct 2018 16:12:06 -0400 Received: from localhost (24-104-73-23-ip-static.hfc.comcastbusiness.net [24.104.73.23]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 40EC5266; Tue, 2 Oct 2018 13:28:44 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ben Greear , Kalle Valo , Sasha Levin Subject: [PATCH 4.18 083/228] ath10k: protect ath10k_htt_rx_ring_free with rx_ring.lock Date: Tue, 2 Oct 2018 06:23:00 -0700 Message-Id: <20181002132504.962910718@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181002132459.032960735@linuxfoundation.org> References: <20181002132459.032960735@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Ben Greear [ Upstream commit 168f75f11fe68455e0d058a818ebccfc329d8685 ] While debugging driver crashes related to a buggy firmware crashing under load, I noticed that ath10k_htt_rx_ring_free could be called without being under lock. I'm not sure if this is the root cause of the crash or not, but it seems prudent to protect it. Originally tested on 4.16+ kernel with ath10k-ct 10.4 firmware running on 9984 NIC. Signed-off-by: Ben Greear Signed-off-by: Kalle Valo Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/ath/ath10k/htt_rx.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- a/drivers/net/wireless/ath/ath10k/htt_rx.c +++ b/drivers/net/wireless/ath/ath10k/htt_rx.c @@ -268,11 +268,12 @@ int ath10k_htt_rx_ring_refill(struct ath spin_lock_bh(&htt->rx_ring.lock); ret = ath10k_htt_rx_ring_fill_n(htt, (htt->rx_ring.fill_level - htt->rx_ring.fill_cnt)); - spin_unlock_bh(&htt->rx_ring.lock); if (ret) ath10k_htt_rx_ring_free(htt); + spin_unlock_bh(&htt->rx_ring.lock); + return ret; } @@ -284,7 +285,9 @@ void ath10k_htt_rx_free(struct ath10k_ht skb_queue_purge(&htt->rx_in_ord_compl_q); skb_queue_purge(&htt->tx_fetch_ind_q); + spin_lock_bh(&htt->rx_ring.lock); ath10k_htt_rx_ring_free(htt); + spin_unlock_bh(&htt->rx_ring.lock); dma_free_coherent(htt->ar->dev, ath10k_htt_get_rx_ring_size(htt),