From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: drivers/net/wireless/intel/iwlwifi/fw/regulatory.c:286 iwl_fill_ppag_table() error: buffer overflow 'gain' 11 <= 21
Date: Sun, 17 Nov 2024 18:07:59 +0800 [thread overview]
Message-ID: <202411171847.0REwoxyl-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Miri Korenblit <miriam.rachel.korenblit@intel.com>
CC: Johannes Berg <johannes.berg@intel.com>
CC: Gregory Greenman <gregory.greenman@intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4a5df37964673effcd9f84041f7423206a5ae5f2
commit: 09059c6764a8870ff7515c2d78ecbea7fbcffc23 wifi: iwlwifi: prepare for reading PPAG table from UEFI
date: 10 months ago
:::::: branch date: 10 hours ago
:::::: commit date: 10 months ago
config: i386-randconfig-141-20241115 (https://download.01.org/0day-ci/archive/20241117/202411171847.0REwoxyl-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202411171847.0REwoxyl-lkp@intel.com/
New smatch warnings:
drivers/net/wireless/intel/iwlwifi/fw/regulatory.c:286 iwl_fill_ppag_table() error: buffer overflow 'gain' 11 <= 21
Old smatch warnings:
drivers/net/wireless/intel/iwlwifi/fw/regulatory.c:288 iwl_fill_ppag_table() error: buffer overflow 'gain' 11 <= 21
vim +/gain +286 drivers/net/wireless/intel/iwlwifi/fw/regulatory.c
09059c6764a887 Miri Korenblit 2024-01-31 208
09059c6764a887 Miri Korenblit 2024-01-31 209 int iwl_fill_ppag_table(struct iwl_fw_runtime *fwrt,
09059c6764a887 Miri Korenblit 2024-01-31 210 union iwl_ppag_table_cmd *cmd, int *cmd_size)
09059c6764a887 Miri Korenblit 2024-01-31 211 {
09059c6764a887 Miri Korenblit 2024-01-31 212 u8 cmd_ver;
09059c6764a887 Miri Korenblit 2024-01-31 213 int i, j, num_sub_bands;
09059c6764a887 Miri Korenblit 2024-01-31 214 s8 *gain;
09059c6764a887 Miri Korenblit 2024-01-31 215
09059c6764a887 Miri Korenblit 2024-01-31 216 /* many firmware images for JF lie about this */
09059c6764a887 Miri Korenblit 2024-01-31 217 if (CSR_HW_RFID_TYPE(fwrt->trans->hw_rf_id) ==
09059c6764a887 Miri Korenblit 2024-01-31 218 CSR_HW_RFID_TYPE(CSR_HW_RF_ID_TYPE_JF))
09059c6764a887 Miri Korenblit 2024-01-31 219 return -EOPNOTSUPP;
09059c6764a887 Miri Korenblit 2024-01-31 220
09059c6764a887 Miri Korenblit 2024-01-31 221 if (!fw_has_capa(&fwrt->fw->ucode_capa, IWL_UCODE_TLV_CAPA_SET_PPAG)) {
09059c6764a887 Miri Korenblit 2024-01-31 222 IWL_DEBUG_RADIO(fwrt,
09059c6764a887 Miri Korenblit 2024-01-31 223 "PPAG capability not supported by FW, command not sent.\n");
09059c6764a887 Miri Korenblit 2024-01-31 224 return -EINVAL;
09059c6764a887 Miri Korenblit 2024-01-31 225 }
09059c6764a887 Miri Korenblit 2024-01-31 226
09059c6764a887 Miri Korenblit 2024-01-31 227 cmd_ver = iwl_fw_lookup_cmd_ver(fwrt->fw,
09059c6764a887 Miri Korenblit 2024-01-31 228 WIDE_ID(PHY_OPS_GROUP,
09059c6764a887 Miri Korenblit 2024-01-31 229 PER_PLATFORM_ANT_GAIN_CMD),
09059c6764a887 Miri Korenblit 2024-01-31 230 IWL_FW_CMD_VER_UNKNOWN);
09059c6764a887 Miri Korenblit 2024-01-31 231 if (!fwrt->ppag_table_valid || (cmd_ver <= 3 && !fwrt->ppag_flags)) {
09059c6764a887 Miri Korenblit 2024-01-31 232 IWL_DEBUG_RADIO(fwrt, "PPAG not enabled, command not sent.\n");
09059c6764a887 Miri Korenblit 2024-01-31 233 return -EINVAL;
09059c6764a887 Miri Korenblit 2024-01-31 234 }
09059c6764a887 Miri Korenblit 2024-01-31 235
09059c6764a887 Miri Korenblit 2024-01-31 236 /* The 'flags' field is the same in v1 and in v2 so we can just
09059c6764a887 Miri Korenblit 2024-01-31 237 * use v1 to access it.
09059c6764a887 Miri Korenblit 2024-01-31 238 */
09059c6764a887 Miri Korenblit 2024-01-31 239 cmd->v1.flags = cpu_to_le32(fwrt->ppag_flags);
09059c6764a887 Miri Korenblit 2024-01-31 240
09059c6764a887 Miri Korenblit 2024-01-31 241 IWL_DEBUG_RADIO(fwrt, "PPAG cmd ver is %d\n", cmd_ver);
09059c6764a887 Miri Korenblit 2024-01-31 242 if (cmd_ver == 1) {
09059c6764a887 Miri Korenblit 2024-01-31 243 num_sub_bands = IWL_NUM_SUB_BANDS_V1;
09059c6764a887 Miri Korenblit 2024-01-31 244 gain = cmd->v1.gain[0];
09059c6764a887 Miri Korenblit 2024-01-31 245 *cmd_size = sizeof(cmd->v1);
09059c6764a887 Miri Korenblit 2024-01-31 246 if (fwrt->ppag_ver == 1 || fwrt->ppag_ver == 2) {
09059c6764a887 Miri Korenblit 2024-01-31 247 /* in this case FW supports revision 0 */
09059c6764a887 Miri Korenblit 2024-01-31 248 IWL_DEBUG_RADIO(fwrt,
09059c6764a887 Miri Korenblit 2024-01-31 249 "PPAG table rev is %d, send truncated table\n",
09059c6764a887 Miri Korenblit 2024-01-31 250 fwrt->ppag_ver);
09059c6764a887 Miri Korenblit 2024-01-31 251 }
09059c6764a887 Miri Korenblit 2024-01-31 252 } else if (cmd_ver >= 2 && cmd_ver <= 4) {
09059c6764a887 Miri Korenblit 2024-01-31 253 num_sub_bands = IWL_NUM_SUB_BANDS_V2;
09059c6764a887 Miri Korenblit 2024-01-31 254 gain = cmd->v2.gain[0];
09059c6764a887 Miri Korenblit 2024-01-31 255 *cmd_size = sizeof(cmd->v2);
09059c6764a887 Miri Korenblit 2024-01-31 256 if (fwrt->ppag_ver == 0) {
09059c6764a887 Miri Korenblit 2024-01-31 257 /* in this case FW supports revisions 1 or 2 */
09059c6764a887 Miri Korenblit 2024-01-31 258 IWL_DEBUG_RADIO(fwrt,
09059c6764a887 Miri Korenblit 2024-01-31 259 "PPAG table rev is 0, send padded table\n");
09059c6764a887 Miri Korenblit 2024-01-31 260 }
09059c6764a887 Miri Korenblit 2024-01-31 261 } else {
09059c6764a887 Miri Korenblit 2024-01-31 262 IWL_DEBUG_RADIO(fwrt, "Unsupported PPAG command version\n");
09059c6764a887 Miri Korenblit 2024-01-31 263 return -EINVAL;
09059c6764a887 Miri Korenblit 2024-01-31 264 }
09059c6764a887 Miri Korenblit 2024-01-31 265
09059c6764a887 Miri Korenblit 2024-01-31 266 /* ppag mode */
09059c6764a887 Miri Korenblit 2024-01-31 267 IWL_DEBUG_RADIO(fwrt,
09059c6764a887 Miri Korenblit 2024-01-31 268 "PPAG MODE bits were read from bios: %d\n",
09059c6764a887 Miri Korenblit 2024-01-31 269 cmd->v1.flags);
09059c6764a887 Miri Korenblit 2024-01-31 270 if ((cmd_ver == 1 &&
09059c6764a887 Miri Korenblit 2024-01-31 271 !fw_has_capa(&fwrt->fw->ucode_capa,
09059c6764a887 Miri Korenblit 2024-01-31 272 IWL_UCODE_TLV_CAPA_PPAG_CHINA_BIOS_SUPPORT)) ||
09059c6764a887 Miri Korenblit 2024-01-31 273 (cmd_ver == 2 && fwrt->ppag_ver == 2)) {
09059c6764a887 Miri Korenblit 2024-01-31 274 cmd->v1.flags &= cpu_to_le32(IWL_PPAG_ETSI_MASK);
09059c6764a887 Miri Korenblit 2024-01-31 275 IWL_DEBUG_RADIO(fwrt, "masking ppag China bit\n");
09059c6764a887 Miri Korenblit 2024-01-31 276 } else {
09059c6764a887 Miri Korenblit 2024-01-31 277 IWL_DEBUG_RADIO(fwrt, "isn't masking ppag China bit\n");
09059c6764a887 Miri Korenblit 2024-01-31 278 }
09059c6764a887 Miri Korenblit 2024-01-31 279
09059c6764a887 Miri Korenblit 2024-01-31 280 IWL_DEBUG_RADIO(fwrt,
09059c6764a887 Miri Korenblit 2024-01-31 281 "PPAG MODE bits going to be sent: %d\n",
09059c6764a887 Miri Korenblit 2024-01-31 282 cmd->v1.flags);
09059c6764a887 Miri Korenblit 2024-01-31 283
09059c6764a887 Miri Korenblit 2024-01-31 284 for (i = 0; i < IWL_NUM_CHAIN_LIMITS; i++) {
09059c6764a887 Miri Korenblit 2024-01-31 285 for (j = 0; j < num_sub_bands; j++) {
09059c6764a887 Miri Korenblit 2024-01-31 @286 gain[i * num_sub_bands + j] =
09059c6764a887 Miri Korenblit 2024-01-31 287 fwrt->ppag_chains[i].subbands[j];
09059c6764a887 Miri Korenblit 2024-01-31 288 IWL_DEBUG_RADIO(fwrt,
09059c6764a887 Miri Korenblit 2024-01-31 289 "PPAG table: chain[%d] band[%d]: gain = %d\n",
09059c6764a887 Miri Korenblit 2024-01-31 290 i, j, gain[i * num_sub_bands + j]);
09059c6764a887 Miri Korenblit 2024-01-31 291 }
09059c6764a887 Miri Korenblit 2024-01-31 292 }
09059c6764a887 Miri Korenblit 2024-01-31 293
09059c6764a887 Miri Korenblit 2024-01-31 294 return 0;
09059c6764a887 Miri Korenblit 2024-01-31 295 }
09059c6764a887 Miri Korenblit 2024-01-31 296 IWL_EXPORT_SYMBOL(iwl_fill_ppag_table);
09059c6764a887 Miri Korenblit 2024-01-31 297
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2024-11-17 10:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-17 10:07 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-12-13 12:24 drivers/net/wireless/intel/iwlwifi/fw/regulatory.c:286 iwl_fill_ppag_table() error: buffer overflow 'gain' 11 <= 21 kernel test robot
2024-10-27 3:45 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202411171847.0REwoxyl-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.