Search Linux Wireless

[bug report] iwlwifi: support loading the reduced power table from UEFI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Luca Coelho,

The patch 9dad325f9d57: "iwlwifi: support loading the reduced power
table from UEFI" from Jun 21, 2021, leads to the following static
checker warning:

	drivers/net/wireless/intel/iwlwifi/fw/pnvm.c:332 iwl_pnvm_load()
	error: uninitialized symbol 'len'.

drivers/net/wireless/intel/iwlwifi/fw/pnvm.c
   256  int iwl_pnvm_load(struct iwl_trans *trans,
   257                    struct iwl_notif_wait_data *notif_wait)
   258  {
   259          u8 *data;
   260          size_t len;
                ^^^^^^^^^^

   261          struct pnvm_sku_package *package;
   262          struct iwl_notification_wait pnvm_wait;
   263          static const u16 ntf_cmds[] = { WIDE_ID(REGULATORY_AND_NVM_GROUP,
   264                                                  PNVM_INIT_COMPLETE_NTFY) };
   265          int ret;
   266  
   267          /* if the SKU_ID is empty, there's nothing to do */
   268          if (!trans->sku_id[0] && !trans->sku_id[1] && !trans->sku_id[2])
   269                  return 0;
   270  
   271          /*
   272           * If we already loaded (or tried to load) it before, we just
   273           * need to set it again.
   274           */
   275          if (trans->pnvm_loaded) {
   276                  ret = iwl_trans_set_pnvm(trans, NULL, 0);
   277                  if (ret)
   278                          return ret;
   279                  goto skip_parse;
                        ^^^^^^^^^^^^^^^

   280          }
   281  
   282          /* First attempt to get the PNVM from BIOS */
   283          package = iwl_uefi_get_pnvm(trans, &len);
   284          if (!IS_ERR_OR_NULL(package)) {
   285                  data = kmemdup(package->data, len, GFP_KERNEL);
   286  
   287                  /* free package regardless of whether kmemdup succeeded */
   288                  kfree(package);
   289  
   290                  if (data) {
   291                          /* we need only the data size */
   292                          len -= sizeof(*package);
   293                          goto parse;
   294                  }
   295          }
   296  
   297          /* If it's not available, try from the filesystem */
   298          ret = iwl_pnvm_get_from_fs(trans, &data, &len);
   299          if (ret) {
   300                  /*
   301                   * Pretend we've loaded it - at least we've tried and
   302                   * couldn't load it at all, so there's no point in
   303                   * trying again over and over.
   304                   */
   305                  trans->pnvm_loaded = true;
   306  
   307                  goto skip_parse;
   308          }
   309  
   310  parse:
   311          iwl_pnvm_parse(trans, data, len);
   312  
   313          kfree(data);
   314  
   315  skip_parse:
   316          data = NULL;
   317          /* now try to get the reduce power table, if not loaded yet */
   318          if (!trans->reduce_power_loaded) {
   319                  data = iwl_uefi_get_reduced_power(trans, &len);
   320                  if (IS_ERR_OR_NULL(data)) {
   321                          /*
   322                           * Pretend we've loaded it - at least we've tried and
   323                           * couldn't load it at all, so there's no point in
   324                           * trying again over and over.
   325                           */
   326                          trans->reduce_power_loaded = true;
   327  
   328                          goto skip_reduce_power;
   329                  }
   330          }
   331  
   332          ret = iwl_trans_set_reduce_power(trans, data, len);
                                                              ^^^
Uninitialized

   333          if (ret)
   334                  IWL_DEBUG_FW(trans,
   335                               "Failed to set reduce power table %d\n",
   336                               ret);
   337          kfree(data);
   338  
   339  skip_reduce_power:
   340          iwl_init_notification_wait(notif_wait, &pnvm_wait,
   341                                     ntf_cmds, ARRAY_SIZE(ntf_cmds),
   342                                     iwl_pnvm_complete_fn, trans);
   343  

regards,
dan carpenter



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux