lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Sun, 30 Oct 2022 13:34:37 +0800
From:   kernel test robot <lkp@...el.com>
To:     James Calligeros <jcalligeros99@...il.com>, vireshk@...nel.org,
        nm@...com, sboyd@...nel.org, linux-pm@...r.kernel.org
Cc:     llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
        linux-kernel@...r.kernel.org, asahi@...r.kernel.org,
        James Calligeros <jcalligeros99@...il.com>
Subject: Re: [PATCH] OPP: decouple dt properties in opp_parse_supplies()

Hi James,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.1-rc2 next-20221028]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/James-Calligeros/OPP-decouple-dt-properties-in-opp_parse_supplies/20221030-114618
patch link:    https://lore.kernel.org/r/20221030034414.24672-1-jcalligeros99%40gmail.com
patch subject: [PATCH] OPP: decouple dt properties in opp_parse_supplies()
config: riscv-randconfig-r042-20221030
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/intel-lab-lkp/linux/commit/c88dea73d372f38c7f3ab19f688cf210d49481ea
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review James-Calligeros/OPP-decouple-dt-properties-in-opp_parse_supplies/20221030-114618
        git checkout c88dea73d372f38c7f3ab19f688cf210d49481ea
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/opp/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@...el.com>

All errors (new ones prefixed by >>):

>> drivers/opp/of.c:739:8: error: no member named 'regulator_count' in 'struct dev_pm_opp'
                   opp->regulator_count = 0;
                   ~~~  ^
   1 error generated.


vim +739 drivers/opp/of.c

   580	
   581	static int opp_parse_supplies(struct dev_pm_opp *opp, struct device *dev,
   582				      struct opp_table *opp_table)
   583	{
   584		u32 *microvolt = NULL, *microamp = NULL, *microwatt = NULL;
   585		int supplies = opp_table->regulator_count;
   586		int vcount, icount, pcount, ret, i, j;
   587		struct property *prop_mv = NULL, *prop_ma = NULL, *prop_mw = NULL;
   588		char name[NAME_MAX];
   589	
   590		/* Search for "opp-microvolt-<name>" */
   591		if (opp_table->prop_name) {
   592			snprintf(name, sizeof(name), "opp-microvolt-%s",
   593				 opp_table->prop_name);
   594			prop_mv = of_find_property(opp->np, name, NULL);
   595		}
   596	
   597		if (!prop_mv) {
   598			/* Search for "opp-microvolt" */
   599			sprintf(name, "opp-microvolt");
   600			prop_mv = of_find_property(opp->np, name, NULL);
   601	
   602		}
   603	
   604		if (prop_mv) {
   605			vcount = of_property_count_u32_elems(opp->np, name);
   606			if (unlikely(supplies == -1))
   607				supplies = opp_table->regulator_count = vcount;
   608		} else {
   609			prop_mv = NULL;
   610			vcount = 0;
   611		}
   612	
   613		if (vcount < 0) {
   614			dev_err(dev, "%s: Invalid %s property (%d)\n",
   615				__func__, name, vcount);
   616			return vcount;
   617		}
   618	
   619		if (vcount) {
   620			/* There can be one or three elements per supply */
   621			if (vcount != supplies && vcount != supplies * 3) {
   622				dev_err(dev, "%s: Invalid number of elements in %s property (%d) with supplies (%d)\n",
   623					__func__, name, vcount, supplies);
   624				return -EINVAL;
   625			}
   626	
   627			microvolt = kmalloc_array(vcount, sizeof(*microvolt), GFP_KERNEL);
   628			if (!microvolt)
   629				return -ENOMEM;
   630	
   631			ret = of_property_read_u32_array(opp->np, name, microvolt, vcount);
   632			if (ret) {
   633				dev_err(dev, "%s: error parsing %s: %d\n", __func__, name, ret);
   634				ret = -EINVAL;
   635				goto free_microvolt;
   636			}
   637		}
   638	
   639		/* Search for "opp-microamp-<name>" */
   640		if (opp_table->prop_name) {
   641			snprintf(name, sizeof(name), "opp-microamp-%s",
   642				 opp_table->prop_name);
   643			prop_ma = of_find_property(opp->np, name, NULL);
   644		}
   645	
   646		if (!prop_ma) {
   647			/* Search for "opp-microamp" */
   648			sprintf(name, "opp-microamp");
   649			prop_ma = of_find_property(opp->np, name, NULL);
   650	
   651		}
   652	
   653		if (prop_ma) {
   654			icount = of_property_count_u32_elems(opp->np, name);
   655			if (unlikely(supplies == -1))
   656				supplies = opp_table->regulator_count = icount;
   657		} else {
   658			prop_ma = NULL;
   659			icount = 0;
   660		}
   661	
   662		if (icount < 0) {
   663			dev_err(dev, "%s: Invalid %s property (%d)\n",
   664				__func__, name, icount);
   665			return icount;
   666		}
   667	
   668		if (icount) {
   669			/* There can be one or three elements per supply */
   670			if (icount != supplies && icount != supplies * 3) {
   671				dev_err(dev, "%s: Invalid number of elements in %s property (%d) with supplies (%d)\n",
   672					__func__, name, icount, supplies);
   673				return -EINVAL;
   674			}
   675	
   676			microamp = kmalloc_array(icount, sizeof(*microamp), GFP_KERNEL);
   677			if (!microamp)
   678				return -ENOMEM;
   679	
   680			ret = of_property_read_u32_array(opp->np, name, microamp, icount);
   681			if (ret) {
   682				dev_err(dev, "%s: error parsing %s: %d\n", __func__, name, ret);
   683				ret = -EINVAL;
   684				goto free_microamp;
   685			}
   686		}
   687	
   688		/* Search for "opp-microwatt-<name>" */
   689		if (opp_table->prop_name) {
   690			snprintf(name, sizeof(name), "opp-microwatt-%s",
   691				 opp_table->prop_name);
   692			prop_mw = of_find_property(opp->np, name, NULL);
   693		}
   694	
   695		if (!prop_mw) {
   696			/* Search for "opp-microwatt" */
   697			sprintf(name, "opp-microwatt");
   698			prop_mw = of_find_property(opp->np, name, NULL);
   699	
   700		}
   701	
   702		if (prop_mw) {
   703			pcount = of_property_count_u32_elems(opp->np, name);
   704			if (unlikely(supplies == -1))
   705				supplies = opp_table->regulator_count = pcount;
   706		} else {
   707			prop_mw = NULL;
   708			pcount = 0;
   709		}
   710	
   711		if (pcount < 0) {
   712			dev_err(dev, "%s: Invalid %s property (%d)\n",
   713				__func__, name, pcount);
   714			return pcount;
   715		}
   716	
   717		if (pcount) {
   718			/* There can be one or three elements per supply */
   719			if (pcount != supplies && pcount != supplies * 3) {
   720				dev_err(dev, "%s: Invalid number of elements in %s property (%d) with supplies (%d)\n",
   721					__func__, name, pcount, supplies);
   722				return -EINVAL;
   723			}
   724	
   725			microwatt = kmalloc_array(pcount, sizeof(*microwatt), GFP_KERNEL);
   726			if (!microwatt)
   727				return -ENOMEM;
   728	
   729			ret = of_property_read_u32_array(opp->np, name, microwatt, pcount);
   730			if (ret) {
   731				dev_err(dev, "%s: error parsing %s: %d\n", __func__, name, ret);
   732				ret = -EINVAL;
   733				goto free_microwatt;
   734			}
   735		}
   736	
   737		/* No supplies associated with the OPP */
   738		if (unlikely(supplies == -1)) {
 > 739			opp->regulator_count = 0;
   740			return 0;
   741		}
   742	
   743		for (i = 0, j = 0; i < supplies; i++) {
   744			if (microvolt) {
   745				opp->supplies[i].u_volt = microvolt[j++];
   746	
   747				if (vcount == supplies) {
   748					opp->supplies[i].u_volt_min = opp->supplies[i].u_volt;
   749					opp->supplies[i].u_volt_max = opp->supplies[i].u_volt;
   750				} else {
   751					opp->supplies[i].u_volt_min = microvolt[j++];
   752					opp->supplies[i].u_volt_max = microvolt[j++];
   753				}
   754			}
   755	
   756			if (microamp)
   757				opp->supplies[i].u_amp = microamp[i];
   758	
   759			if (microwatt)
   760				opp->supplies[i].u_watt = microwatt[i];
   761		}
   762	
   763	free_microwatt:
   764		kfree(microwatt);
   765	free_microamp:
   766		kfree(microamp);
   767	free_microvolt:
   768		kfree(microvolt);
   769	
   770		return ret;
   771	}
   772	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

View attachment "config" of type "text/plain" (186643 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ