Hi Andy, I love your patch! Yet something to improve: [auto build test ERROR on linusw-pinctrl/devel] [also build test ERROR on linusw-pinctrl/for-next next-20230210] [cannot apply to clk/clk-next soc/for-next linus/master v6.2-rc7] [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/Andy-Shevchenko/pinctrl-at91-use-devm_kasprintf-to-avoid-potential-leaks-part-2/20230210-225817 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel patch link: https://lore.kernel.org/r/20230210145656.71838-2-andriy.shevchenko%40linux.intel.com patch subject: [PATCH v1 1/5] pinctrl: at91: use devm_kasprintf() to avoid potential leaks (part 2) config: arm-randconfig-r046-20230210 (https://download.01.org/0day-ci/archive/20230211/202302110407.TpDeAlpQ-lkp@xxxxxxxxx/config) compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0 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/0562771ccfa099db4361c2e5958ca1685f498cdf git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Andy-Shevchenko/pinctrl-at91-use-devm_kasprintf-to-avoid-potential-leaks-part-2/20230210-225817 git checkout 0562771ccfa099db4361c2e5958ca1685f498cdf # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Link: https://lore.kernel.org/oe-kbuild-all/202302110407.TpDeAlpQ-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): drivers/pinctrl/pinctrl-at91.c: In function 'at91_pinctrl_probe': >> drivers/pinctrl/pinctrl-at91.c:1402:22: error: 'names' undeclared (first use in this function) 1402 | if (!names) | ^~~~~ drivers/pinctrl/pinctrl-at91.c:1402:22: note: each undeclared identifier is reported only once for each function it appears in drivers/pinctrl/pinctrl-at91.c: In function 'at91_gpio_probe': drivers/pinctrl/pinctrl-at91.c:1889:28: warning: passing argument 1 of 'strreplace' makes pointer from integer without a cast [-Wint-conversion] 1889 | strreplace('-', alias_idx + 'A'); | ^~~ | | | int In file included from include/linux/bitmap.h:11, from include/linux/cpumask.h:12, from include/linux/smp.h:13, from include/linux/lockdep.h:14, from include/linux/mutex.h:17, from include/linux/notifier.h:14, from include/linux/clk.h:14, from drivers/pinctrl/pinctrl-at91.c:8: include/linux/string.h:172:24: note: expected 'char *' but argument is of type 'int' 172 | char *strreplace(char *s, char old, char new); | ~~~~~~^ >> drivers/pinctrl/pinctrl-at91.c:1889:17: error: too few arguments to function 'strreplace' 1889 | strreplace('-', alias_idx + 'A'); | ^~~~~~~~~~ include/linux/string.h:172:7: note: declared here 172 | char *strreplace(char *s, char old, char new); | ^~~~~~~~~~ vim +/names +1402 drivers/pinctrl/pinctrl-at91.c 1372 1373 static int at91_pinctrl_probe(struct platform_device *pdev) 1374 { 1375 struct device *dev = &pdev->dev; 1376 struct at91_pinctrl *info; 1377 struct pinctrl_pin_desc *pdesc; 1378 int ret, i, j, k; 1379 1380 info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); 1381 if (!info) 1382 return -ENOMEM; 1383 1384 ret = at91_pinctrl_probe_dt(pdev, info); 1385 if (ret) 1386 return ret; 1387 1388 at91_pinctrl_desc.name = dev_name(&pdev->dev); 1389 at91_pinctrl_desc.npins = gpio_banks * MAX_NB_GPIO_PER_BANK; 1390 at91_pinctrl_desc.pins = pdesc = 1391 devm_kcalloc(&pdev->dev, 1392 at91_pinctrl_desc.npins, sizeof(*pdesc), 1393 GFP_KERNEL); 1394 1395 if (!at91_pinctrl_desc.pins) 1396 return -ENOMEM; 1397 1398 for (i = 0, k = 0; i < gpio_banks; i++) { 1399 char **pin_names; 1400 1401 pin_names = devm_kasprintf_strarray(dev, "pio", MAX_NB_GPIO_PER_BANK); > 1402 if (!names) 1403 return -ENOMEM; 1404 1405 for (j = 0; j < MAX_NB_GPIO_PER_BANK; j++, k++) { 1406 char *pin_name = pin_names[j]; 1407 1408 strreplace(pin_name, '-', i + 'A'); 1409 1410 pdesc->number = k; 1411 pdesc->name = pin_name; 1412 pdesc++; 1413 } 1414 } 1415 1416 platform_set_drvdata(pdev, info); 1417 info->pctl = devm_pinctrl_register(&pdev->dev, &at91_pinctrl_desc, 1418 info); 1419 1420 if (IS_ERR(info->pctl)) { 1421 dev_err(&pdev->dev, "could not register AT91 pinctrl driver\n"); 1422 return PTR_ERR(info->pctl); 1423 } 1424 1425 /* We will handle a range of GPIO pins */ 1426 for (i = 0; i < gpio_banks; i++) 1427 if (gpio_chips[i]) 1428 pinctrl_add_gpio_range(info->pctl, &gpio_chips[i]->range); 1429 1430 dev_info(&pdev->dev, "initialized AT91 pinctrl driver\n"); 1431 1432 return 0; 1433 } 1434 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests