]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: dvm: fix potential overflow in rs_fill_link_cmd()
authorRand Deeb <rand.sec96@gmail.com>
Wed, 13 Mar 2024 10:17:55 +0000 (13:17 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 25 Jun 2025 07:57:34 +0000 (10:57 +0300)
The 'index' variable in the rs_fill_link_cmd() function can reach
LINK_QUAL_MAX_RETRY_NUM during the execution of the inner loop. This
variable is used as an index for the lq_cmd->rs_table array, which has a
size of LINK_QUAL_MAX_RETRY_NUM, without proper validation.

Modify the condition of the inner loop to ensure that the 'index' variable
does not exceed LINK_QUAL_MAX_RETRY_NUM - 1, thereby preventing any
potential overflow issues.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Rand Deeb <rand.sec96@gmail.com>
Link: https://patch.msgid.link/20240313101755.269209-1-rand.sec96@gmail.com
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
drivers/net/wireless/intel/iwlwifi/dvm/rs.c

index 8879e668ef0da048766ce356229eb1191a7616e6..ed964103281ed5c5c5216b2c0ce45d17e3f8f213 100644 (file)
@@ -2899,7 +2899,7 @@ static void rs_fill_link_cmd(struct iwl_priv *priv,
                /* Repeat initial/next rate.
                 * For legacy IWL_NUMBER_TRY == 1, this loop will not execute.
                 * For HT IWL_HT_NUMBER_TRY == 3, this executes twice. */
-               while (repeat_rate > 0 && (index < LINK_QUAL_MAX_RETRY_NUM)) {
+               while (repeat_rate > 0 && index < (LINK_QUAL_MAX_RETRY_NUM - 1)) {
                        if (is_legacy(tbl_type.lq_type)) {
                                if (ant_toggle_cnt < NUM_TRY_BEFORE_ANT_TOGGLE)
                                        ant_toggle_cnt++;