From: kernel test robot <lkp@intel.com>
To: Cristian Marussi <cristian.marussi@arm.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
Sudeep Holla <sudeep.holla@arm.com>
Subject: [sudeep-holla:for-next/scmi 22/22] drivers/powercap/arm_scmi_powercap.c:429 scmi_powercap_probe() warn: unsigned 'pr->num_zones' is never less than zero.
Date: Sun, 10 Jul 2022 19:02:22 +0800 [thread overview]
Message-ID: <202207101807.UYiCXGqy-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git for-next/scmi
head: 31afdd34f2b9e1f33018baa4f279e2b2a91f5afa
commit: 31afdd34f2b9e1f33018baa4f279e2b2a91f5afa [22/22] powercap: arm_scmi: Add SCMI powercap based driver
config: microblaze-randconfig-m031-20220706 (https://download.01.org/0day-ci/archive/20220710/202207101807.UYiCXGqy-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 11.3.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
smatch warnings:
drivers/powercap/arm_scmi_powercap.c:429 scmi_powercap_probe() warn: unsigned 'pr->num_zones' is never less than zero.
drivers/powercap/arm_scmi_powercap.c:494 scmi_powercap_probe() error: uninitialized symbol 'ret'.
vim +429 drivers/powercap/arm_scmi_powercap.c
406
407 static int scmi_powercap_probe(struct scmi_device *sdev)
408 {
409 int ret, i;
410 struct scmi_powercap_root *pr;
411 struct scmi_powercap_zone *spz;
412 struct scmi_protocol_handle *ph;
413 struct device *dev = &sdev->dev;
414 const struct scmi_handle *handle = sdev->handle;
415
416 if (!handle)
417 return -ENODEV;
418
419 powercap_ops = handle->devm_protocol_get(sdev, SCMI_PROTOCOL_POWERCAP,
420 &ph);
421 if (IS_ERR(powercap_ops))
422 return PTR_ERR(powercap_ops);
423
424 pr = devm_kzalloc(dev, sizeof(*pr), GFP_KERNEL);
425 if (!pr)
426 return -ENOMEM;
427
428 pr->num_zones = powercap_ops->num_domains_get(ph);
> 429 if (pr->num_zones < 0) {
430 dev_err(dev, "number of powercap domains not found\n");
431 return pr->num_zones;
432 }
433
434 pr->spzones = devm_kcalloc(dev, pr->num_zones,
435 sizeof(*pr->spzones), GFP_KERNEL);
436 if (!pr->spzones)
437 return -ENOMEM;
438
439 /* Allocate for worst possible scenario of maximum tree height. */
440 pr->registered_zones = devm_kcalloc(dev, pr->num_zones,
441 sizeof(*pr->registered_zones),
442 GFP_KERNEL);
443 if (!pr->registered_zones)
444 return -ENOMEM;
445
446 for (i = 0, spz = pr->spzones; i < pr->num_zones; i++, spz++) {
447 /*
448 * Powercap domains are validate by the protocol layer, i.e.
449 * when only non-NULL domains are returned here, whose
450 * parent_id is assured to point to another valid domain.
451 */
452 spz->info = powercap_ops->info_get(ph, i);
453
454 spz->dev = dev;
455 spz->ph = ph;
456 spz->spzones = pr->spzones;
457 INIT_LIST_HEAD(&spz->node);
458 INIT_LIST_HEAD(&pr->registered_zones[i]);
459
460 /*
461 * Forcibly skip powercap domains using an abstract scale.
462 * Note that only leaves domains can be skipped, so this could
463 * lead later to a global failure.
464 */
465 if (!spz->info->powercap_scale_uw &&
466 !spz->info->powercap_scale_mw) {
467 dev_warn(dev,
468 "Abstract power scale not supported. Skip %s.\n",
469 spz->info->name);
470 spz->info = NULL;
471 continue;
472 }
473 }
474
475 /*
476 * Scan array of retrieved SCMI powercap domains and register them
477 * recursively starting from the root domains.
478 */
479 for (i = 0, spz = pr->spzones; i < pr->num_zones; i++, spz++) {
480 ret = scmi_powercap_register_zone(pr, spz);
481 if (ret) {
482 dev_err(dev,
483 "Failed to register powercap zone %s - ret:%d\n",
484 spz->info->name, ret);
485 scmi_powercap_unregister_all_zones(pr);
486 return ret;
487 }
488 }
489
490 dev_set_drvdata(dev, pr);
491
492 dev_info(dev, "Registered %d SCMI Powercap domains !\n", pr->num_zones);
493
> 494 return ret;
495 }
496
--
0-DAY CI Kernel Test Service
https://01.org/lkp
reply other threads:[~2022-07-10 11:06 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202207101807.UYiCXGqy-lkp@intel.com \
--to=lkp@intel.com \
--cc=cristian.marussi@arm.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sudeep.holla@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®