mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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®