Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp296201pxx; Wed, 28 Oct 2020 05:16:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzLmxPuQAZqdsrImPGBMY5vihmFklczsuimKDdFsiGWHncEqowLYDFQOMK4+ee1zec3ve7h X-Received: by 2002:a17:906:711:: with SMTP id y17mr7396077ejb.271.1603887382218; Wed, 28 Oct 2020 05:16:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603887382; cv=none; d=google.com; s=arc-20160816; b=LdDzarS8WYXAdBPee0St7ihG1ceETzkU8dVrSB6adOGpjL7qzPbOdXqzdbgAf8DDvM uXk3E0aRUmHkjQUMDGoCg7PxpOnoeaSQ8OaA8R2uMoFYl9/xtpFElG4s8pRBAO9mK2XA ENUG1h4BAlTX41GPKUH7VThj0wpRaWSmCet9aljrX6O57ZeTAHx71QK17eDbbl2ZVcOz 3jdQQhaeSaVk55J23q9jc9kVy5BF6qPn6uu5M6K3Oa+egWO6BfIsjyEaE0CqQPwMurUt 1Jw8R6v6gQDr+tUSHikeLmylmz6v3euVZr24HdpeV5QX/L9FvlJZfDheGv5y4HBAkxxW yLJw== 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=/5V+dXDo5xsxNxZSeS1efTrM0fpldxEjKjanNMgx2+w=; b=RoOZybZZkaau/ESc5OIj2W45Q4rLE7xssMJyz+nrqxhR3/3sp0vepk9o+/JJtmhQ/t rmMNml/o0Si+rIuxFnYzMgOybF68H6I+XO6wja4eCZN6n5Z6kOJJ8Yv6yUgvl9aIJGc1 v9uzQerDQ1+XPr8aBgCT1OJc2LU8IL7lDQANONA9lQNZLdcz3dZ6Yg7UaQji/O6GEIJ3 rC5/H5TqCd43x9lM2ZICdAEneyO7BXV3f3blkvDs/tS1uQ7EDFD8NBP10gBPikpxhd2n UfWYKgW39cXkOVNo3O1JjrAvgVGn7BooPoEseWEmlaw68vAThsPezmQMKD7Ut658lv8z euew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wuo+AquB; 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=fail (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 lg14si2653130ejb.82.2020.10.28.05.15.58; Wed, 28 Oct 2020 05:16:22 -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=@kernel.org header.s=default header.b=wuo+AquB; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1796362AbgJ0PRp (ORCPT + 99 others); Tue, 27 Oct 2020 11:17:45 -0400 Received: from mail.kernel.org ([198.145.29.99]:50570 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1794806AbgJ0PNn (ORCPT ); Tue, 27 Oct 2020 11:13:43 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id AC04920728; Tue, 27 Oct 2020 15:13:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603811622; bh=0Si8sYFictuo/anSAUU6Sehfcghwz4mryykeuuymkMQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wuo+AquBJ+NHP/k5UiUMkmr8vsPyekCVxFxovOb2OgCsdxo4mcJjLnirrs9m4xj2s s5Wy+H4arAu98YMqG8+sTRST0DmFviZTujPZXbNAthKSbsCQ+RrDnHsN5skvYKvzWU F92r3yJqy4wvngasDHzZoOTtkZFm9LuuJzcqWelg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Thomas Pedersen , Johannes Berg , Sasha Levin Subject: [PATCH 5.8 559/633] mac80211: handle lack of sband->bitrates in rates Date: Tue, 27 Oct 2020 14:55:02 +0100 Message-Id: <20201027135549.029851608@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027135522.655719020@linuxfoundation.org> References: <20201027135522.655719020@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: Thomas Pedersen [ Upstream commit 8b783d104e7f40684333d2ec155fac39219beb2f ] Even though a driver or mac80211 shouldn't produce a legacy bitrate if sband->bitrates doesn't exist, don't crash if that is the case either. This fixes a kernel panic if station dump is run before last_rate can be updated with a data frame when sband->bitrates is missing (eg. in S1G bands). Signed-off-by: Thomas Pedersen Link: https://lore.kernel.org/r/20201005164522.18069-1-thomas@adapt-ip.com Signed-off-by: Johannes Berg Signed-off-by: Sasha Levin --- net/mac80211/cfg.c | 3 ++- net/mac80211/sta_info.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 1079a07e43e49..d74cfec685477 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -709,7 +709,8 @@ void sta_set_rate_info_tx(struct sta_info *sta, u16 brate; sband = ieee80211_get_sband(sta->sdata); - if (sband) { + WARN_ON_ONCE(sband && !sband->bitrates); + if (sband && sband->bitrates) { brate = sband->bitrates[rate->idx].bitrate; rinfo->legacy = DIV_ROUND_UP(brate, 1 << shift); } diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 05e966f1609e2..b93916c382cdb 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c @@ -2122,6 +2122,10 @@ static void sta_stats_decode_rate(struct ieee80211_local *local, u32 rate, int rate_idx = STA_STATS_GET(LEGACY_IDX, rate); sband = local->hw.wiphy->bands[band]; + + if (WARN_ON_ONCE(!sband->bitrates)) + break; + brate = sband->bitrates[rate_idx].bitrate; if (rinfo->bw == RATE_INFO_BW_5) shift = 2; -- 2.25.1