Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp456601yba; Wed, 15 May 2019 04:26:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqztWzlD6T7QI8NAR6L4M4cTJ3iIxeuii8kCjvvaP4NL1hQpceGhzBGD9YJ1yhpFy5OTOwQC X-Received: by 2002:a63:5f42:: with SMTP id t63mr42945357pgb.275.1557919562405; Wed, 15 May 2019 04:26:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557919562; cv=none; d=google.com; s=arc-20160816; b=hZP6cJer70hKrBTL+jXos5xGF7whm9DfCjORkOVoTLxqtAJkzhZkHYf8OeRn1KrQsM UTYBiFYcBChEBW7K5DsdlyiDeKXdzgbK3kqPTSsPfBXkhdYkX46BK6EcZFy+ZLWkrvX5 l1wHaiXXL4+ZXPBu/bGSYaDJHDUys60t5MQhO6pPMkWrq0ZUT9Ym7/TZ7KeeNv6tHNfG RhUCk3JYXDKgt9Ms9qNO2fK3YBn1Zr/CRUpT3qqMEous4XSDnEraQitwbLHFZp7AVt7L cj0xOEwXXz0rMDQRU3iYvXRB90k3ZMcTCH8ENIrS7HfczRzCIV/Wbf4e3zqmpWz8U3op qYVQ== 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:dkim-signature; bh=hf7mg7oG1mfxsT6PZScDZUxtMW5uiPuClYpt1UALAVA=; b=hd46eqaqtUj1wR+bAerS/1ruWDZeQk08MsknlT1P+9Hlpqq6Oo87Da3a/1RAacX+yo IVvpeEah3Ys6kUUsMWl4tlD0N6ZLvvnOkWpxJZvUyhpuGKTArvXszwCv9Qvd6MDjAia6 6CSnuxpIyXdJZF+a88HLRlqWL4BELhMGKmmv3oLKCa8MbhNyQPx6Y0/rv5GfybDdmvhJ 9I980uXGGvuVqAomxmZoP9zCIjxoilzafTbYOkN8pni4syX8ZSdw7JPpVblK5XqBF4HR G9b7diXbUZnZQ3z3Dg57bqUznxN13P2HgRwYjerWgbp9XPEOq4WE9eHrDvZNd3+aizoq zqvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xCgx9akt; 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 33si1523241pld.265.2019.05.15.04.25.47; Wed, 15 May 2019 04:26:02 -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; dkim=pass header.i=@kernel.org header.s=default header.b=xCgx9akt; 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 S1731812AbfEOLY2 (ORCPT + 99 others); Wed, 15 May 2019 07:24:28 -0400 Received: from mail.kernel.org ([198.145.29.99]:35038 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731783AbfEOLY0 (ORCPT ); Wed, 15 May 2019 07:24:26 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 5E20F2084F; Wed, 15 May 2019 11:24:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1557919464; bh=dVQBo5mtvrTupR7EEWhapQ5svi0kusxcNoYyTDZh03o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xCgx9aktsvgjKFwQ+D9uw4FGkMy5OykDJRfQRSJVFJpyHT71JDHZvIlaS0OWkmVOd yUhXBetLxo/17PDbiEoWVYl25enATvcj9ItTZzNlQaxBBdS46kVge8y+aldXjTHf0k zB3TYEex9mT8o/r1h2RGuONLj5Wc/sg0ov7H9xH4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Eubert Bao , =?UTF-8?q?Petr=20=C5=A0tetiar?= , Kalle Valo Subject: [PATCH 4.19 083/113] mwl8k: Fix rate_idx underflow Date: Wed, 15 May 2019 12:56:14 +0200 Message-Id: <20190515090659.931745665@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190515090652.640988966@linuxfoundation.org> References: <20190515090652.640988966@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Petr Štetiar commit 6b583201fa219b7b1b6aebd8966c8fd9357ef9f4 upstream. It was reported on OpenWrt bug tracking system[1], that several users are affected by the endless reboot of their routers if they configure 5GHz interface with channel 44 or 48. The reboot loop is caused by the following excessive number of WARN_ON messages: WARNING: CPU: 0 PID: 0 at backports-4.19.23-1/net/mac80211/rx.c:4516 ieee80211_rx_napi+0x1fc/0xa54 [mac80211] as the messages are being correctly emitted by the following guard: case RX_ENC_LEGACY: if (WARN_ON(status->rate_idx >= sband->n_bitrates)) as the rate_idx is in this case erroneously set to 251 (0xfb). This fix simply converts previously used magic number to proper constant and guards against substraction which is leading to the currently observed underflow. 1. https://bugs.openwrt.org/index.php?do=details&task_id=2218 Fixes: 854783444bab ("mwl8k: properly set receive status rate index on 5 GHz receive") Cc: Tested-by: Eubert Bao Reported-by: Eubert Bao Signed-off-by: Petr Štetiar Signed-off-by: Kalle Valo Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/marvell/mwl8k.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) --- a/drivers/net/wireless/marvell/mwl8k.c +++ b/drivers/net/wireless/marvell/mwl8k.c @@ -441,6 +441,9 @@ static const struct ieee80211_rate mwl8k #define MWL8K_CMD_UPDATE_STADB 0x1123 #define MWL8K_CMD_BASTREAM 0x1125 +#define MWL8K_LEGACY_5G_RATE_OFFSET \ + (ARRAY_SIZE(mwl8k_rates_24) - ARRAY_SIZE(mwl8k_rates_50)) + static const char *mwl8k_cmd_name(__le16 cmd, char *buf, int bufsize) { u16 command = le16_to_cpu(cmd); @@ -1016,8 +1019,9 @@ mwl8k_rxd_ap_process(void *_rxd, struct if (rxd->channel > 14) { status->band = NL80211_BAND_5GHZ; - if (!(status->encoding == RX_ENC_HT)) - status->rate_idx -= 5; + if (!(status->encoding == RX_ENC_HT) && + status->rate_idx >= MWL8K_LEGACY_5G_RATE_OFFSET) + status->rate_idx -= MWL8K_LEGACY_5G_RATE_OFFSET; } else { status->band = NL80211_BAND_2GHZ; } @@ -1124,8 +1128,9 @@ mwl8k_rxd_sta_process(void *_rxd, struct if (rxd->channel > 14) { status->band = NL80211_BAND_5GHZ; - if (!(status->encoding == RX_ENC_HT)) - status->rate_idx -= 5; + if (!(status->encoding == RX_ENC_HT) && + status->rate_idx >= MWL8K_LEGACY_5G_RATE_OFFSET) + status->rate_idx -= MWL8K_LEGACY_5G_RATE_OFFSET; } else { status->band = NL80211_BAND_2GHZ; }