Commit 86331c7e authored by Zong-Zhe Yang's avatar Zong-Zhe Yang Committed by Kalle Valo
Browse files

wifi: rtw88: phy: fix warning of possible buffer overflow



reported by smatch

phy.c:854 rtw_phy_linear_2_db() error: buffer overflow 'db_invert_table[i]'
8 <= 8 (assuming for loop doesn't break)

However, it seems to be a false alarm because we prevent it originally via
       if (linear >= db_invert_table[11][7])
               return 96; /* maximum 96 dB */

Still, we adjust the code to be more readable and avoid smatch warning.

Signed-off-by: default avatarZong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220727065003.28340-5-pkshih@realtek.com
parent 79ba1062
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -816,23 +816,18 @@ static u8 rtw_phy_linear_2_db(u64 linear)
	u8 j;
	u32 dB;

	if (linear >= db_invert_table[11][7])
		return 96; /* maximum 96 dB */

	for (i = 0; i < 12; i++) {
		if (i <= 2 && (linear << FRAC_BITS) <= db_invert_table[i][7])
			break;
		else if (i > 2 && linear <= db_invert_table[i][7])
			break;
	}

		for (j = 0; j < 8; j++) {
			if (i <= 2 && (linear << FRAC_BITS) <= db_invert_table[i][j])
			break;
				goto cnt;
			else if (i > 2 && linear <= db_invert_table[i][j])
			break;
				goto cnt;
		}
	}

	return 96; /* maximum 96 dB */

cnt:
	if (j == 0 && i == 0)
		goto end;