Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2829110pxv; Mon, 12 Jul 2021 02:59:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxggb0Oe1U9DK1n26+Dmof5U+a9uKMTcB43KP+drH1oBgBhr0riw3MxbgG1ch0owkq7ODv3 X-Received: by 2002:a92:905:: with SMTP id y5mr20185315ilg.222.1626083955941; Mon, 12 Jul 2021 02:59:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626083955; cv=none; d=google.com; s=arc-20160816; b=RplaGXPCmgCYpli/hNr3E83pfYpTpJZ7fi2qvaZP043Dwkm8SBG3mTltLiTTtF+Wzc ZkbLFtRHL+rsPoGXvcOqz2HzJpUuaHfGPdR+uuXLui3DZ3kazGq0zLXX3s8K4O3CBKNd cdrx9hXHMiDRrhsjxi/Sp5nbuxmRPuR28H+EXW/Ko+zEjJLsjqBzwKWih5DC6cJQTvy8 h3I5vLoZYZOstNeVPN8sUZjuQx0DvZb1sGHq8e2HPRzGpjCowzlbcOTnJS1B45XkxyPd X0H7yVG0QE3DxCQ0sB0P1MP0v0DWWo00g9y+3bQU0WM1/tysSAgQKvZ03EF6XeIgqxpK mH/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=00xJYlVJXRkDlJCbZVOQW0xqbY3POYd+0Vdr2k5fHeI=; b=oO8mBM60YgoGCrSaMUcjEFzoBo82QyOk5+pf8zsaddGk6QE0qIC97WqqdT2PBBvf4k HkP4ceijeHGY5zPDqiOA3wUZ0NXStVWKf6ytgk0HIxAvhLzuHMwrYGqz9LQhsMQ3M2Br K1SoIQNUjkvVDE4IT+SulcIlt3g2mcWvGpbFy4t0jaZvXGJNboBRtaxVC0/ijz2Vijxw rPQ7/Hsj+C4AG44h4WXDUIPJfc9S1XaJnyqSEm6Bfp2kiyD+xeSEnnoYDsSP6772bRYd w3fGeADs4+iwrFyhG6IN3ew5iNGMlt4HveC7ipkIM6PvsCCscIfTcXeT8ooTVKzRcG3G muFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=bvyp+++5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k11si18279063jav.18.2021.07.12.02.59.04; Mon, 12 Jul 2021 02:59:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=bvyp+++5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240566AbhGLHDq (ORCPT + 99 others); Mon, 12 Jul 2021 03:03:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:45554 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237797AbhGLGqb (ORCPT ); Mon, 12 Jul 2021 02:46:31 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 0F0126115A; Mon, 12 Jul 2021 06:42:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626072137; bh=1weI87J3HuGB9Few8pYRG04Ft700xcnGZ+M+IMJ5ZAo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bvyp+++5EToLQdc97th3W3sz3xUOOeC2FYW913BjZDsqED3ieKQsql3G9Kykruf7s fqx3rosuaN8Jy6b5NQj2lOCFTcBFyRvpWV16es1/VgPUVC7nRVMFBdu+4rwzxY2n6O PXVlbKwLPdws83yIkClqOhRL48LVC2TBkDYvDn7M= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Lorenzo Bianconi , Felix Fietkau , Sasha Levin Subject: [PATCH 5.10 369/593] mt76: mt7615: fix NULL pointer dereference in tx_prepare_skb() Date: Mon, 12 Jul 2021 08:08:49 +0200 Message-Id: <20210712060927.257954202@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060843.180606720@linuxfoundation.org> References: <20210712060843.180606720@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lorenzo Bianconi [ Upstream commit 8d3cdc1bbb1d355f0ebef973175ae5fd74286feb ] Fix theoretical NULL pointer dereference in mt7615_tx_prepare_skb and mt7663_usb_sdio_tx_prepare_skb routines. This issue has been identified by code analysis. Fixes: 6aa4ed7927f11 ("mt76: mt7615: implement DMA support for MT7622") Fixes: 4bb586bc33b98 ("mt76: mt7663u: sync probe sampling with rate configuration") Signed-off-by: Lorenzo Bianconi Signed-off-by: Felix Fietkau Signed-off-by: Sasha Levin --- drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c | 5 +++-- drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c b/drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c index 4cf7c5d34325..490d55651de3 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c @@ -133,20 +133,21 @@ int mt7615_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, struct mt76_tx_info *tx_info) { struct mt7615_dev *dev = container_of(mdev, struct mt7615_dev, mt76); - struct mt7615_sta *msta = container_of(wcid, struct mt7615_sta, wcid); struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx_info->skb); struct ieee80211_key_conf *key = info->control.hw_key; int pid, id; u8 *txwi = (u8 *)txwi_ptr; struct mt76_txwi_cache *t; + struct mt7615_sta *msta; void *txp; + msta = wcid ? container_of(wcid, struct mt7615_sta, wcid) : NULL; if (!wcid) wcid = &dev->mt76.global_wcid; pid = mt76_tx_status_skb_add(mdev, wcid, tx_info->skb); - if (info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) { + if ((info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) && msta) { struct mt7615_phy *phy = &dev->phy; if ((info->hw_queue & MT_TX_HW_QUEUE_EXT_PHY) && mdev->phy2) diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c b/drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c index 3b29a6d3dc64..18082b4ce7d3 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c +++ b/drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c @@ -243,14 +243,15 @@ int mt7663_usb_sdio_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, struct ieee80211_sta *sta, struct mt76_tx_info *tx_info) { - struct mt7615_sta *msta = container_of(wcid, struct mt7615_sta, wcid); struct mt7615_dev *dev = container_of(mdev, struct mt7615_dev, mt76); struct sk_buff *skb = tx_info->skb; struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + struct mt7615_sta *msta; int pad; + msta = wcid ? container_of(wcid, struct mt7615_sta, wcid) : NULL; if ((info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) && - !msta->rate_probe) { + msta && !msta->rate_probe) { /* request to configure sampling rate */ spin_lock_bh(&dev->mt76.lock); mt7615_mac_set_rates(&dev->phy, msta, &info->control.rates[0], -- 2.30.2