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/pcie/tx.c:690 iwl_pcie_txq_alloc() warn: check sign expansion for 'slots_num'
Date: Sun, 27 Oct 2024 18:18:24 +0800 [thread overview]
Message-ID: <202410271847.iCD1KB9P-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Johannes Berg <johannes.berg@intel.com>
CC: Miri Korenblit <miriam.rachel.korenblit@intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 850925a8133c73c4a2453c360b2c3beb3bab67c9
commit: 49101078be769e9c50a8bfbc8caaab56db9d12d9 wifi: iwlwifi: pcie: integrate TX queue code
date: 5 months ago
:::::: branch date: 2 days ago
:::::: commit date: 5 months ago
config: x86_64-randconfig-161-20241026 (https://download.01.org/0day-ci/archive/20241027/202410271847.iCD1KB9P-lkp@intel.com/config)
compiler: clang version 19.1.2 (https://github.com/llvm/llvm-project 7ba7d8e2f7b6445b60679da826210cdde29eaf8b)
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/202410271847.iCD1KB9P-lkp@intel.com/
smatch warnings:
drivers/net/wireless/intel/iwlwifi/pcie/tx.c:690 iwl_pcie_txq_alloc() warn: check sign expansion for 'slots_num'
vim +/slots_num +690 drivers/net/wireless/intel/iwlwifi/pcie/tx.c
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 685
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 686 int iwl_pcie_txq_alloc(struct iwl_trans *trans, struct iwl_txq *txq,
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 687 int slots_num, bool cmd_queue)
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 688 {
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 689 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 @690 size_t num_entries = trans->trans_cfg->gen2 ?
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 691 slots_num : trans->trans_cfg->base_params->max_tfd_queue_size;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 692 size_t tfd_sz;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 693 size_t tb0_buf_sz;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 694 int i;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 695
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 696 if (WARN_ONCE(slots_num <= 0, "Invalid slots num:%d\n", slots_num))
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 697 return -EINVAL;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 698
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 699 if (WARN_ON(txq->entries || txq->tfds))
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 700 return -EINVAL;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 701
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 702 tfd_sz = trans_pcie->txqs.tfd.size * num_entries;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 703
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 704 timer_setup(&txq->stuck_timer, iwl_txq_stuck_timer, 0);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 705 txq->trans = trans;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 706
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 707 txq->n_window = slots_num;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 708
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 709 txq->entries = kcalloc(slots_num,
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 710 sizeof(struct iwl_pcie_txq_entry),
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 711 GFP_KERNEL);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 712
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 713 if (!txq->entries)
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 714 goto error;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 715
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 716 if (cmd_queue)
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 717 for (i = 0; i < slots_num; i++) {
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 718 txq->entries[i].cmd =
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 719 kmalloc(sizeof(struct iwl_device_cmd),
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 720 GFP_KERNEL);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 721 if (!txq->entries[i].cmd)
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 722 goto error;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 723 }
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 724
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 725 /* Circular buffer of transmit frame descriptors (TFDs),
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 726 * shared with device
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 727 */
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 728 txq->tfds = dma_alloc_coherent(trans->dev, tfd_sz,
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 729 &txq->dma_addr, GFP_KERNEL);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 730 if (!txq->tfds)
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 731 goto error;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 732
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 733 BUILD_BUG_ON(sizeof(*txq->first_tb_bufs) != IWL_FIRST_TB_SIZE_ALIGN);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 734
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 735 tb0_buf_sz = sizeof(*txq->first_tb_bufs) * slots_num;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 736
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 737 txq->first_tb_bufs = dma_alloc_coherent(trans->dev, tb0_buf_sz,
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 738 &txq->first_tb_dma,
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 739 GFP_KERNEL);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 740 if (!txq->first_tb_bufs)
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 741 goto err_free_tfds;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 742
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 743 for (i = 0; i < num_entries; i++) {
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 744 void *tfd = iwl_txq_get_tfd(trans, txq, i);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 745
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 746 if (trans->trans_cfg->gen2)
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 747 iwl_txq_set_tfd_invalid_gen2(trans, tfd);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 748 else
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 749 iwl_txq_set_tfd_invalid_gen1(trans, tfd);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 750 }
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 751
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 752 return 0;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 753 err_free_tfds:
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 754 dma_free_coherent(trans->dev, tfd_sz, txq->tfds, txq->dma_addr);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 755 txq->tfds = NULL;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 756 error:
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 757 if (txq->entries && cmd_queue)
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 758 for (i = 0; i < slots_num; i++)
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 759 kfree(txq->entries[i].cmd);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 760 kfree(txq->entries);
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 761 txq->entries = NULL;
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 762
49101078be769e drivers/net/wireless/intel/iwlwifi/pcie/tx.c Johannes Berg 2024-06-05 763 return -ENOMEM;
f02831be962c7b drivers/net/wireless/iwlwifi/pcie/tx.c Emmanuel Grumbach 2012-11-14 764 }
f02831be962c7b drivers/net/wireless/iwlwifi/pcie/tx.c Emmanuel Grumbach 2012-11-14 765
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2024-10-27 10:19 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-27 10:18 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-12-13 16:33 drivers/net/wireless/intel/iwlwifi/pcie/tx.c:690 iwl_pcie_txq_alloc() warn: check sign expansion for 'slots_num' 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=202410271847.iCD1KB9P-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.