From: Nathan Chancellor <nathan@kernel.org>
To: Arnd Bergmann <arnd@kernel.org>
Cc: Luca Coelho <luciano.coelho@intel.com>,
Kalle Valo <kvalo@codeaurora.org>, Arnd Bergmann <arnd@arndb.de>,
kernel test robot <lkp@intel.com>,
Nick Desaulniers <ndesaulniers@google.com>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Johannes Berg <johannes.berg@intel.com>,
Yaara Baruch <yaara.baruch@intel.com>,
Matti Gottlieb <matti.gottlieb@intel.com>,
Emmanuel Grumbach <emmanuel.grumbach@intel.com>,
linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, llvm@lists.linux.dev
Subject: Re: [PATCH] [v3] iwlwifi: pcie: fix constant-conversion warning
Date: Thu, 18 Nov 2021 09:03:59 -0700 [thread overview]
Message-ID: <YZZ5b0FoppEBRcdL@archlinux-ax161> (raw)
In-Reply-To: <20211118142124.526901-1-arnd@kernel.org>
On Thu, Nov 18, 2021 at 03:21:02PM +0100, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> gcc-11 points out a potential issue with integer overflow when
> the iwl_dev_info_table[] array is empty:
>
> drivers/net/wireless/intel/iwlwifi/pcie/drv.c:1344:42: error: implicit conversion from 'unsigned long' to 'int' changes value from 18446744073709551615 to -1 [-Werror,-Wconstant-conversion]
> for (i = ARRAY_SIZE(iwl_dev_info_table) - 1; i >= 0; i--) {
> ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
For what it's worth, I do see this warning with Clang when both
CONFIG_IWLDVM and CONFIG_IWLMVM are disabled and looking through the GCC
warning docs [1], I do not see a -Wconstant-conversion option? Maybe
there is another warning that is similar but that warning right there
appears to have come from clang, as it matches mine exactly.
drivers/net/wireless/intel/iwlwifi/pcie/drv.c:1344:42: error: implicit conversion from 'unsigned long' to 'int' changes value from 18446744073709551615 to -1 [-Werror,-Wconstant-conversion]
for (i = ARRAY_SIZE(iwl_dev_info_table) - 1; i >= 0; i--) {
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
1 error generated.
[1]: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
> This is still harmless, as the loop correctly terminates, but adding
> an extra range check makes that obvious to both readers and to the
> compiler.
>
> Fixes: 3f7320428fa4 ("iwlwifi: pcie: simplify iwl_pci_find_dev_info()")
> Reported-by: kernel test robot <lkp@intel.com>
> Cc: Nick Desaulniers <ndesaulniers@google.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Regardless of above, this resolves the warning for clang.
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> ---
> Changes in v3:
> - make it actually work with gcc-11
> - fix commit message s/clang/gcc-11/
>
> Changes in v2:
> - replace int cast with a range check
> ---
> drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
> index c574f041f096..395e328c6a07 100644
> --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
> +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
> @@ -1339,9 +1339,13 @@ iwl_pci_find_dev_info(u16 device, u16 subsystem_device,
> u16 mac_type, u8 mac_step,
> u16 rf_type, u8 cdb, u8 rf_id, u8 no_160, u8 cores)
> {
> + int num_devices = ARRAY_SIZE(iwl_dev_info_table);
> int i;
>
> - for (i = ARRAY_SIZE(iwl_dev_info_table) - 1; i >= 0; i--) {
> + if (!num_devices)
> + return NULL;
> +
> + for (i = num_devices - 1; i >= 0; i--) {
> const struct iwl_dev_info *dev_info = &iwl_dev_info_table[i];
>
> if (dev_info->device != (u16)IWL_CFG_ANY &&
> --
> 2.29.2
>
next prev parent reply other threads:[~2021-11-18 16:04 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-18 14:21 [PATCH] [v3] iwlwifi: pcie: fix constant-conversion warning Arnd Bergmann
2021-11-18 16:03 ` Nathan Chancellor [this message]
2021-11-18 16:27 ` Arnd Bergmann
2021-11-22 18:35 ` Kalle Valo
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=YZZ5b0FoppEBRcdL@archlinux-ax161 \
--to=nathan@kernel.org \
--cc=arnd@arndb.de \
--cc=arnd@kernel.org \
--cc=davem@davemloft.net \
--cc=emmanuel.grumbach@intel.com \
--cc=johannes.berg@intel.com \
--cc=kuba@kernel.org \
--cc=kvalo@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=lkp@intel.com \
--cc=llvm@lists.linux.dev \
--cc=luciano.coelho@intel.com \
--cc=matti.gottlieb@intel.com \
--cc=ndesaulniers@google.com \
--cc=netdev@vger.kernel.org \
--cc=yaara.baruch@intel.com \
/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.