drivers/pinctrl/nxp/pinctrl-s32cc.c:830:62: warning: '%u' directive output may be truncated writing between 1 and 10 bytes into a region of size 5

From: kernel test robot
Date: Wed Oct 18 2023 - 08:06:49 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 06dc10eae55b5ceabfef287a7e5f16ceea204aa0
commit: fd84aaa8173d3ff86f8df2009921336a1ea53a8a pinctrl: add NXP S32 SoC family support
date: 8 months ago
config: arm64-randconfig-002-20230923 (https://download.01.org/0day-ci/archive/20231018/202310181926.olw9ysCc-lkp@xxxxxxxxx/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231018/202310181926.olw9ysCc-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310181926.olw9ysCc-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

drivers/pinctrl/nxp/pinctrl-s32cc.c: In function 's32_pinctrl_probe_dt':
>> drivers/pinctrl/nxp/pinctrl-s32cc.c:830:62: warning: '%u' directive output may be truncated writing between 1 and 10 bytes into a region of size 5 [-Wformat-truncation=]
830 | sizeof(ipctl->regions[i].name), "map%u", i);
| ^~
drivers/pinctrl/nxp/pinctrl-s32cc.c:830:58: note: directive argument in the range [0, 4294967294]
830 | sizeof(ipctl->regions[i].name), "map%u", i);
| ^~~~~~~
drivers/pinctrl/nxp/pinctrl-s32cc.c:829:17: note: 'snprintf' output between 5 and 14 bytes into a destination of size 8
829 | snprintf(ipctl->regions[i].name,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
830 | sizeof(ipctl->regions[i].name), "map%u", i);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +830 drivers/pinctrl/nxp/pinctrl-s32cc.c

796
797 static int s32_pinctrl_probe_dt(struct platform_device *pdev,
798 struct s32_pinctrl *ipctl)
799 {
800 struct s32_pinctrl_soc_info *info = ipctl->info;
801 struct device_node *np = pdev->dev.of_node;
802 struct device_node *child;
803 struct resource *res;
804 struct regmap *map;
805 void __iomem *base;
806 int mem_regions = info->mem_regions;
807 u32 nfuncs = 0;
808 u32 i = 0;
809
810 if (!np)
811 return -ENODEV;
812
813 if (mem_regions == 0) {
814 dev_err(&pdev->dev, "mem_regions is 0\n");
815 return -EINVAL;
816 }
817
818 ipctl->regions = devm_kzalloc(&pdev->dev,
819 mem_regions * sizeof(*(ipctl->regions)),
820 GFP_KERNEL);
821 if (!ipctl->regions)
822 return -ENOMEM;
823
824 for (i = 0; i < mem_regions; ++i) {
825 base = devm_platform_get_and_ioremap_resource(pdev, i, &res);
826 if (IS_ERR(base))
827 return PTR_ERR(base);
828
829 snprintf(ipctl->regions[i].name,
> 830 sizeof(ipctl->regions[i].name), "map%u", i);
831
832 s32_regmap_config.name = ipctl->regions[i].name;
833 s32_regmap_config.max_register = resource_size(res) -
834 s32_regmap_config.reg_stride;
835
836 map = devm_regmap_init_mmio(&pdev->dev, base,
837 &s32_regmap_config);
838 if (IS_ERR(map)) {
839 dev_err(&pdev->dev, "Failed to init regmap[%u]\n", i);
840 return PTR_ERR(map);
841 }
842
843 ipctl->regions[i].map = map;
844 ipctl->regions[i].pin_range = &info->mem_pin_ranges[i];
845 }
846
847 nfuncs = of_get_child_count(np);
848 if (nfuncs <= 0) {
849 dev_err(&pdev->dev, "no functions defined\n");
850 return -EINVAL;
851 }
852
853 info->nfunctions = nfuncs;
854 info->functions = devm_kzalloc(&pdev->dev,
855 nfuncs * sizeof(struct s32_pmx_func),
856 GFP_KERNEL);
857 if (!info->functions)
858 return -ENOMEM;
859
860 info->ngroups = 0;
861 for_each_child_of_node(np, child)
862 info->ngroups += of_get_child_count(child);
863 info->groups = devm_kzalloc(&pdev->dev,
864 info->ngroups * sizeof(struct s32_pin_group),
865 GFP_KERNEL);
866 if (!info->groups)
867 return -ENOMEM;
868
869 i = 0;
870 for_each_child_of_node(np, child)
871 s32_pinctrl_parse_functions(child, info, i++);
872
873 return 0;
874 }
875

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki