Re: [PATCH v1 1/1] kasan: Replace strreplace() with strchrnul()

From: kernel test robot
Date: Wed Jul 19 2023 - 01:37:34 EST


Hi Andy,

kernel test robot noticed the following build warnings:

[auto build test WARNING on akpm-mm/mm-everything]
[also build test WARNING on linus/master v6.5-rc2 next-20230718]
[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/kasan-Replace-strreplace-with-strchrnul/20230628-233727
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20230628153342.53406-1-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v1 1/1] kasan: Replace strreplace() with strchrnul()
config: x86_64-randconfig-x001-20230718 (https://download.01.org/0day-ci/archive/20230719/202307191350.tJh2PZdE-lkp@xxxxxxxxx/config)
compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project.git 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a)
reproduce: (https://download.01.org/0day-ci/archive/20230719/202307191350.tJh2PZdE-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/202307191350.tJh2PZdE-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> mm/kasan/report_generic.c:286:3: warning: variable 'p' is uninitialized when used here [-Wuninitialized]
p[strchrnul(token, ':') - token] = '\0';
^
mm/kasan/report_generic.c:267:10: note: initialize the variable 'p' to silence this warning
char *p;
^
= NULL
1 warning generated.


vim +/p +286 mm/kasan/report_generic.c

242
243 static void print_decoded_frame_descr(const char *frame_descr)
244 {
245 /*
246 * We need to parse the following string:
247 * "n alloc_1 alloc_2 ... alloc_n"
248 * where alloc_i looks like
249 * "offset size len name"
250 * or "offset size len name:line".
251 */
252
253 char token[64];
254 unsigned long num_objects;
255
256 if (!tokenize_frame_descr(&frame_descr, token, sizeof(token),
257 &num_objects))
258 return;
259
260 pr_err("\n");
261 pr_err("This frame has %lu %s:\n", num_objects,
262 num_objects == 1 ? "object" : "objects");
263
264 while (num_objects--) {
265 unsigned long offset;
266 unsigned long size;
267 char *p;
268
269 /* access offset */
270 if (!tokenize_frame_descr(&frame_descr, token, sizeof(token),
271 &offset))
272 return;
273 /* access size */
274 if (!tokenize_frame_descr(&frame_descr, token, sizeof(token),
275 &size))
276 return;
277 /* name length (unused) */
278 if (!tokenize_frame_descr(&frame_descr, NULL, 0, NULL))
279 return;
280 /* object name */
281 if (!tokenize_frame_descr(&frame_descr, token, sizeof(token),
282 NULL))
283 return;
284
285 /* Strip line number; without filename it's not very helpful. */
> 286 p[strchrnul(token, ':') - token] = '\0';
287
288 /* Finally, print object information. */
289 pr_err(" [%lu, %lu) '%s'", offset, offset + size, token);
290 }
291 }
292

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