Re: [PATCH v3 1/3] regulator: Add regulator_bulk_get_all

kernel test robot
2022-05-23T09:55:25Z

Hi Corentin,

I love your patch! Yet something to improve:

[auto build test ERROR on broonie-regulator/for-next]
[also build test ERROR on sunxi/sunxi/for-next linus/master v5.18 next-20220520]
[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]

url: https://github.com/intel-lab-lkp/linux/commits/Corentin-Labbe/arm64-add-ethernet-to-orange-pi-3/20220523-133344
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next
config: i386-randconfig-a012-20220523 (https://download.01.org/0day-ci/archive/20220523/202205231748.IZoXf2Sf-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 768a1ca5eccb678947f4155e38a5f5744dcefb56)
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
# https://github.com/intel-lab-lkp/linux/commit/179be86f748a2cce87423bb16f4f967c97bf5d9b
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Corentin-Labbe/arm64-add-ethernet-to-orange-pi-3/20220523-133344
git checkout 179be86f748a2cce87423bb16f4f967c97bf5d9b
# 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=i386 SHELL=/bin/bash

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

All errors (new ones prefixed by >>):

>> drivers/regulator/core.c:4870:2: error: call to undeclared function 'for_each_property_of_node'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
for_each_property_of_node(np, prop) {
^
>> drivers/regulator/core.c:4870:37: error: expected ';' after expression
for_each_property_of_node(np, prop) {
^
;
>> drivers/regulator/core.c:4873:4: error: 'continue' statement not in loop statement
continue;
^
drivers/regulator/core.c:4876:4: error: 'continue' statement not in loop statement
continue;
^
drivers/regulator/core.c:4887:4: error: 'continue' statement not in loop statement
continue;
^
5 errors generated.

vim +/for_each_property_of_node +4870 drivers/regulator/core.c

4839
4840 /*
4841 * regulator_bulk_get_all - get multiple regulator consumers
4842 *
4843 * @dev: Device to supply
4844 * @np: device node to search for consumers
4845 * @consumers: Configuration of consumers; clients are stored here.
4846 *
4847 * @return number of regulators on success, an errno on failure.
4848 *
4849 * This helper function allows drivers to get several regulator
4850 * consumers in one operation. If any of the regulators cannot be
4851 * acquired then any regulators that were allocated will be freed
4852 * before returning to the caller.
4853 */
4854 int regulator_bulk_get_all(struct device *dev, struct device_node *np,
4855 struct regulator_bulk_data **consumers)
4856 {
4857 int num_consumers = 0;
4858 struct regulator *tmp;
4859 struct property *prop;
4860 int i, n = 0, ret;
4861 char name[64];
4862
4863 *consumers = NULL;
4864
4865 /*
4866 * first pass: get numbers of xxx-supply
4867 * second pass: fill consumers
4868 * */
4869 restart:
> 4870 for_each_property_of_node(np, prop) {
4871 i = is_supply_name(prop->name);
4872 if (i == 0)
> 4873 continue;
4874 if (!*consumers) {
4875 num_consumers++;
4876 continue;
4877 } else {
4878 memcpy(name, prop->name, i);
4879 name[i] = '\0';
4880 tmp = regulator_get(dev, name);
4881 if (!tmp) {
4882 ret = -EINVAL;
4883 goto error;
4884 }
4885 (*consumers)[n].consumer = tmp;
4886 n++;
4887 continue;
4888 }
4889 }
4890 if (*consumers)
4891 return num_consumers;
4892 if (num_consumers == 0)
4893 return 0;
4894 *consumers = kmalloc_array(num_consumers,
4895 sizeof(struct regulator_bulk_data),
4896 GFP_KERNEL);
4897 if (!*consumers)
4898 return -ENOMEM;
4899 goto restart;
4900
4901 error:
4902 while (--n >= 0)
4903 regulator_put(consumers[n]->consumer);
4904 return ret;
4905 }
4906 EXPORT_SYMBOL_GPL(regulator_bulk_get_all);
4907

--
0-DAY CI Kernel Test Service