Received: by 2002:a05:6358:4e97:b0:b3:742d:4702 with SMTP id ce23csp2928649rwb; Mon, 15 Aug 2022 14:14:16 -0700 (PDT) X-Google-Smtp-Source: AA6agR4fOeUjokoSb5C0Z8vuJ37flR+JpsZKbvP4ZAEMserwreXFjH+n2uZLgbvpLtCfaat/wOhu X-Received: by 2002:a05:6a00:138a:b0:52d:979a:b640 with SMTP id t10-20020a056a00138a00b0052d979ab640mr18063699pfg.8.1660598055753; Mon, 15 Aug 2022 14:14:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660598055; cv=none; d=google.com; s=arc-20160816; b=kBraeSWXs4AUMrZtEXYuBgvcDS+1Fxnp2fvGdcOgFV22Sua7OqZgGYHmHPHPPO6X5h ACDetKTt43suIiH14+hsJKnsQ9ix2dFI/N+aEPDssIvoaOX2ClMKnoqzO4sCQ/KTLb9S cNXzeqxdEGhIKK2oIBDMPBQ7MhhPHuP5aS869t/jrI2voTuXpQms3+oOZRX5dDg7Rvrp yxzVhC/nbHJoMRisREyRyRPuRyn7FSwPiL5AFf+OYh4sN3USVbukbZuEfmJX8p5nmXeQ x1y6aGZvtxFlY+nYmbbjuwSKSnXyNVqmKPGuxonOvSJPepP/a6u6nTLIKMfGtu4lPh2D F43A== 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=IWxNPDBWOzEEivY4eEjmI85rgHooJbhYr7gX3pMA49U=; b=SwXDBbEPXF5I4hmddAvRWdC+n1GlJJb5bgtqXo/yfPwqmLdOa59SNNuov/7zXQg/Mk crdcZG/t49HG49lZjCqy92ud/BV1Ajl1Lz6q/zTBzE1e0T5TJJtxsRuefqQRV+46/VzB ybcRicQWEBmcLP18CFwNJ5H7JAgiTTEPi3HSZzMn/ySi66+yBetn3xH7VgbMZaZ8mdVE XGzyFSKqGD0tXS+lfHf4tBX0G26R9lm6QxsWoX4/bfoZQInfJQkZP6PtnyeTyqVATIvI TKpvP0sGSiolvAkRF0S7RsRVq0ztjGmcJFUopycT+6yrjcgSgI2Ju5LV69e/LQpoENpz t2GA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=X5adwM2q; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 10-20020a630b0a000000b0041d7ab4e620si11888925pgl.866.2022.08.15.14.14.04; Mon, 15 Aug 2022 14:14:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=X5adwM2q; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S243990AbiHOVCq (ORCPT + 99 others); Mon, 15 Aug 2022 17:02:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344558AbiHOVAp (ORCPT ); Mon, 15 Aug 2022 17:00:45 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6CAA7C651B; Mon, 15 Aug 2022 12:13:06 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 9B3FEB810C6; Mon, 15 Aug 2022 19:13:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE06BC433D6; Mon, 15 Aug 2022 19:13:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1660590783; bh=C+7qbxZDcsHmioA8hGAKIIf6AxtRN3IaVwqqKwIMSR0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X5adwM2qsydbd22Kn57dTxHTolfupn+/9EXhO9dCM5Ked26FeFjgBb40/KZuaocCC wuk6BXLEKCXZ3NcC/SuSLnilJiAkDV9OLqBo5f9ie4oq+kA530gNEKB5Zf0HniVtcN YJ0oudEmiQP3kspaO9POERFOq0oARa+E8u2FJy8Q= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alexey Kodanev , Kalle Valo , Sasha Levin Subject: [PATCH 5.18 0362/1095] wifi: iwlegacy: 4965: fix potential off-by-one overflow in il4965_rs_fill_link_cmd() Date: Mon, 15 Aug 2022 19:56:01 +0200 Message-Id: <20220815180444.707677234@linuxfoundation.org> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220815180429.240518113@linuxfoundation.org> References: <20220815180429.240518113@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexey Kodanev [ Upstream commit a8eb8e6f7159c7c20c0ddac428bde3d110890aa7 ] As a result of the execution of the inner while loop, the value of 'idx' can be equal to LINK_QUAL_MAX_RETRY_NUM. However, this is not checked after the loop and 'idx' is used to write the LINK_QUAL_MAX_RETRY_NUM size array 'lq_cmd->rs_table[idx]' below in the outer loop. The fix is to check the new value of 'idx' inside the nested loop, and break both loops if index equals the size. Checking it at the start is now pointless, so let's remove it. Detected using the static analysis tool - Svace. Fixes: be663ab67077 ("iwlwifi: split the drivers for agn and legacy devices 3945/4965") Signed-off-by: Alexey Kodanev Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20220608171614.28891-1-aleksei.kodanev@bell-sw.com Signed-off-by: Sasha Levin --- drivers/net/wireless/intel/iwlegacy/4965-rs.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/intel/iwlegacy/4965-rs.c b/drivers/net/wireless/intel/iwlegacy/4965-rs.c index 9a491e5db75b..532e3b91777d 100644 --- a/drivers/net/wireless/intel/iwlegacy/4965-rs.c +++ b/drivers/net/wireless/intel/iwlegacy/4965-rs.c @@ -2403,7 +2403,7 @@ il4965_rs_fill_link_cmd(struct il_priv *il, struct il_lq_sta *lq_sta, /* Repeat initial/next rate. * For legacy IL_NUMBER_TRY == 1, this loop will not execute. * For HT IL_HT_NUMBER_TRY == 3, this executes twice. */ - while (repeat_rate > 0 && idx < LINK_QUAL_MAX_RETRY_NUM) { + while (repeat_rate > 0) { if (is_legacy(tbl_type.lq_type)) { if (ant_toggle_cnt < NUM_TRY_BEFORE_ANT_TOGGLE) ant_toggle_cnt++; @@ -2422,6 +2422,8 @@ il4965_rs_fill_link_cmd(struct il_priv *il, struct il_lq_sta *lq_sta, cpu_to_le32(new_rate); repeat_rate--; idx++; + if (idx >= LINK_QUAL_MAX_RETRY_NUM) + goto out; } il4965_rs_get_tbl_info_from_mcs(new_rate, lq_sta->band, @@ -2466,6 +2468,7 @@ il4965_rs_fill_link_cmd(struct il_priv *il, struct il_lq_sta *lq_sta, repeat_rate--; } +out: lq_cmd->agg_params.agg_frame_cnt_limit = LINK_QUAL_AGG_FRAME_LIMIT_DEF; lq_cmd->agg_params.agg_dis_start_th = LINK_QUAL_AGG_DISABLE_START_DEF; -- 2.35.1