drivers/clk/mvebu/clk-cpu.c:200:41: warning: 'sprintf' may write a terminating nul past the end of the destination

From: kernel test robot
Date: Sat Nov 04 2023 - 06:11:17 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 90b0c2b2edd1adff742c621e246562fbefa11b70
commit: bd73d1fd63d4f67dc78640c9ae4f83e20a021d76 clk: mvebu: Iterate over possible CPUs instead of DT CPU nodes
date: 5 months ago
config: arm-defconfig (https://download.01.org/0day-ci/archive/20231104/202311041722.oU3dQNqT-lkp@xxxxxxxxx/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231104/202311041722.oU3dQNqT-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/202311041722.oU3dQNqT-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

drivers/clk/mvebu/clk-cpu.c: In function 'of_cpu_clk_setup':
>> drivers/clk/mvebu/clk-cpu.c:200:41: warning: 'sprintf' may write a terminating nul past the end of the destination [-Wformat-overflow=]
200 | sprintf(clk_name, "cpu%d", cpu);
| ^
drivers/clk/mvebu/clk-cpu.c:200:17: note: 'sprintf' output between 5 and 6 bytes into a destination of size 5
200 | sprintf(clk_name, "cpu%d", cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/sprintf +200 drivers/clk/mvebu/clk-cpu.c

ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 165
9ac81751d67b2a Sachin Kamat 2013-10-08 166 static void __init of_cpu_clk_setup(struct device_node *node)
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 167 {
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 168 struct cpu_clk *cpuclk;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 169 void __iomem *clock_complex_base = of_iomap(node, 0);
ee2d8ea1e9bb27 Thomas Petazzoni 2014-07-09 170 void __iomem *pmu_dfs_base = of_iomap(node, 1);
bd73d1fd63d4f6 Rob Herring 2023-06-09 171 int ncpus = num_possible_cpus();
bd73d1fd63d4f6 Rob Herring 2023-06-09 172 int cpu;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 173
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 174 if (clock_complex_base == NULL) {
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 175 pr_err("%s: clock-complex base register not set\n",
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 176 __func__);
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 177 return;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 178 }
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 179
ee2d8ea1e9bb27 Thomas Petazzoni 2014-07-09 180 if (pmu_dfs_base == NULL)
ee2d8ea1e9bb27 Thomas Petazzoni 2014-07-09 181 pr_warn("%s: pmu-dfs base register not set, dynamic frequency scaling not available\n",
ee2d8ea1e9bb27 Thomas Petazzoni 2014-07-09 182 __func__);
ee2d8ea1e9bb27 Thomas Petazzoni 2014-07-09 183
23826e240ad827 Markus Elfring 2017-04-19 184 cpuclk = kcalloc(ncpus, sizeof(*cpuclk), GFP_KERNEL);
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 185 if (WARN_ON(!cpuclk))
f98d007d332b81 Jisheng Zhang 2013-08-23 186 goto cpuclk_out;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 187
23826e240ad827 Markus Elfring 2017-04-19 188 clks = kcalloc(ncpus, sizeof(*clks), GFP_KERNEL);
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 189 if (WARN_ON(!clks))
d6f620a457aa4c Cong Ding 2013-01-15 190 goto clks_out;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 191
bd73d1fd63d4f6 Rob Herring 2023-06-09 192 for_each_possible_cpu(cpu) {
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 193 struct clk_init_data init;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 194 struct clk *clk;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 195 char *clk_name = kzalloc(5, GFP_KERNEL);
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 196
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 197 if (WARN_ON(!clk_name))
d6f620a457aa4c Cong Ding 2013-01-15 198 goto bail_out;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 199
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 @200 sprintf(clk_name, "cpu%d", cpu);
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 201
61e22fff647544 Stephen Boyd 2015-10-16 202 cpuclk[cpu].parent_name = of_clk_get_parent_name(node, 0);
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 203 cpuclk[cpu].clk_name = clk_name;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 204 cpuclk[cpu].cpu = cpu;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 205 cpuclk[cpu].reg_base = clock_complex_base;
ee2d8ea1e9bb27 Thomas Petazzoni 2014-07-09 206 if (pmu_dfs_base)
ee2d8ea1e9bb27 Thomas Petazzoni 2014-07-09 207 cpuclk[cpu].pmu_dfs = pmu_dfs_base + 4 * cpu;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 208 cpuclk[cpu].hw.init = &init;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 209
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 210 init.name = cpuclk[cpu].clk_name;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 211 init.ops = &cpu_ops;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 212 init.flags = 0;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 213 init.parent_names = &cpuclk[cpu].parent_name;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 214 init.num_parents = 1;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 215
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 216 clk = clk_register(NULL, &cpuclk[cpu].hw);
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 217 if (WARN_ON(IS_ERR(clk)))
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 218 goto bail_out;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 219 clks[cpu] = clk;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 220 }
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 221 clk_data.clk_num = MAX_CPU;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 222 clk_data.clks = clks;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 223 of_clk_add_provider(node, of_clk_src_onecell_get, &clk_data);
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 224
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 225 return;
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 226 bail_out:
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 227 kfree(clks);
d6f620a457aa4c Cong Ding 2013-01-15 228 while(ncpus--)
d6f620a457aa4c Cong Ding 2013-01-15 229 kfree(cpuclk[ncpus].clk_name);
d6f620a457aa4c Cong Ding 2013-01-15 230 clks_out:
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 231 kfree(cpuclk);
f98d007d332b81 Jisheng Zhang 2013-08-23 232 cpuclk_out:
f98d007d332b81 Jisheng Zhang 2013-08-23 233 iounmap(clock_complex_base);
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 234 }
ab8ba01b3fe5e0 Gregory CLEMENT 2012-11-17 235

:::::: The code at line 200 was first introduced by commit
:::::: ab8ba01b3fe5e0b81bd2da0afe66f7f6968e017b clk: mvebu: add armada-370-xp CPU specific clocks

:::::: TO: Gregory CLEMENT <gregory.clement@xxxxxxxxxxxxxxxxxx>
:::::: CC: Thomas Petazzoni <thomas.petazzoni@xxxxxxxxxxxxxxxxxx>

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