From patchwork Fri Sep 26 21:40:22 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Larry Finger X-Patchwork-Id: 4987851 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 1AD6EBEEA6 for ; Fri, 26 Sep 2014 21:40:50 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1823F20225 for ; Fri, 26 Sep 2014 21:40:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D26DE2021B for ; Fri, 26 Sep 2014 21:40:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756315AbaIZVkm (ORCPT ); Fri, 26 Sep 2014 17:40:42 -0400 Received: from mail-oi0-f53.google.com ([209.85.218.53]:34684 "EHLO mail-oi0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756205AbaIZVkj (ORCPT ); Fri, 26 Sep 2014 17:40:39 -0400 Received: by mail-oi0-f53.google.com with SMTP id x69so3938158oia.40 for ; Fri, 26 Sep 2014 14:40:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=jb/v/sRyXO9G2NPinKeCSenL6zugEh417ze3eH3OsW8=; b=HmXcx7NpUJXQ/37FxexOV9yXm1JP9tLANij2ssZQHvI9pTUzjQc7iSCgamaPFQw9De A7bYz46/OAUJm/CKdsizSzUdr1QQd1nr0cxzIiDB3TcrQQPKMuFwrke6+/7aWlUMJlCU ryWc4gKTqVX4Pa1c9Pay16f8MndCdcsq0/hvrNcz6g4mYLWHcMRSYacQ6WOBVTWAIzbU yHRTLNrcktSjwfpjVTAHHe1/m7wvDEE+V2M/psk0dwhKqjOWA1dnR3A6hz3yJDCZmHGf Pl2JLpbNHMBCRYWAijuQ9X312lvhpfyFImIjAcH2XXx6mAbFHewvUI80A8MBWCbwusb1 kDxw== X-Received: by 10.60.64.40 with SMTP id l8mr24160998oes.63.1411767638762; Fri, 26 Sep 2014 14:40:38 -0700 (PDT) Received: from linux.site (cpe-69-76-245-152.kc.res.rr.com. [69.76.245.152]) by mx.google.com with ESMTPSA id w20sm3717551obg.27.2014.09.26.14.40.38 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 26 Sep 2014 14:40:38 -0700 (PDT) From: Larry Finger To: linville@tuxdriver.com Cc: linux-wireless@vger.kernel.org, troy_tan@realsil.com.cn, Larry Finger , netdev@vger.kernel.org Subject: [PATCH 1/7 NEXT] rtlwifi: rtl8188ee: rtl8821ae: Fix a queue locking problem Date: Fri, 26 Sep 2014 16:40:22 -0500 Message-Id: <1411767628-7965-2-git-send-email-Larry.Finger@lwfinger.net> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1411767628-7965-1-git-send-email-Larry.Finger@lwfinger.net> References: <1411767628-7965-1-git-send-email-Larry.Finger@lwfinger.net> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,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 The code fails to lock the skb queue, which leads to a number of problems. This patch also fixes a Sparse warning about using a memset of 1 byte. Signed-off-by: Larry Finger Cc: troy_tan@realsil.com.cn --- drivers/net/wireless/rtlwifi/rtl8188ee/fw.c | 2 +- drivers/net/wireless/rtlwifi/rtl8188ee/hw.c | 3 +++ drivers/net/wireless/rtlwifi/rtl8821ae/fw.c | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/fw.c b/drivers/net/wireless/rtlwifi/rtl8188ee/fw.c index eda6617..8d4cf2e 100644 --- a/drivers/net/wireless/rtlwifi/rtl8188ee/fw.c +++ b/drivers/net/wireless/rtlwifi/rtl8188ee/fw.c @@ -770,7 +770,7 @@ void rtl88e_set_p2p_ps_offload_cmd(struct ieee80211_hw *hw, u8 p2p_ps_state) switch (p2p_ps_state) { case P2P_PS_DISABLE: RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "P2P_PS_DISABLE\n"); - memset(p2p_ps_offload, 0, 1); + memset(p2p_ps_offload, 0, sizeof(*p2p_ps_offload)); break; case P2P_PS_ENABLE: RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "P2P_PS_ENABLE\n"); diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/hw.c b/drivers/net/wireless/rtlwifi/rtl8188ee/hw.c index f74b7fb..f2b9713 100644 --- a/drivers/net/wireless/rtlwifi/rtl8188ee/hw.c +++ b/drivers/net/wireless/rtlwifi/rtl8188ee/hw.c @@ -89,7 +89,9 @@ static void _rtl88ee_return_beacon_queue_skb(struct ieee80211_hw *hw) struct rtl_priv *rtlpriv = rtl_priv(hw); struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[BEACON_QUEUE]; + unsigned long flags; + spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags); while (skb_queue_len(&ring->queue)) { struct rtl_tx_desc *entry = &ring->desc[ring->idx]; struct sk_buff *skb = __skb_dequeue(&ring->queue); @@ -101,6 +103,7 @@ static void _rtl88ee_return_beacon_queue_skb(struct ieee80211_hw *hw) kfree_skb(skb); ring->idx = (ring->idx + 1) % ring->entries; } + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); } static void _rtl88ee_disable_bcn_sub_func(struct ieee80211_hw *hw) diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/fw.c b/drivers/net/wireless/rtlwifi/rtl8821ae/fw.c index 6f71aaa..2efdb64 100644 --- a/drivers/net/wireless/rtlwifi/rtl8821ae/fw.c +++ b/drivers/net/wireless/rtlwifi/rtl8821ae/fw.c @@ -1757,7 +1757,7 @@ void rtl8821ae_set_p2p_ps_offload_cmd(struct ieee80211_hw *hw, u8 p2p_ps_state) switch (p2p_ps_state) { case P2P_PS_DISABLE: RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "P2P_PS_DISABLE\n"); - memset(p2p_ps_offload, 0, 1); + memset(p2p_ps_offload, 0, sizeof(*p2p_ps_offload)); break; case P2P_PS_ENABLE: RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "P2P_PS_ENABLE\n");