kernel/trace/trace_events_user.c:392:38: sparse: sparse: Using plain integer as NULL pointer

From: kernel test robot
Date: Fri Jul 15 2022 - 19:28:22 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 9b59ec8d50a1f28747ceff9a4f39af5deba9540e
commit: aa3b2b4c669205200615dd8a2cc4af4f81fd0335 user_events: Add print_fmt generation support for basic types
date: 5 months ago
config: sparc64-randconfig-s031-20220716 (https://download.01.org/0day-ci/archive/20220716/202207160723.D8leglO3-lkp@xxxxxxxxx/config)
compiler: sparc64-linux-gcc (GCC) 12.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=aa3b2b4c669205200615dd8a2cc4af4f81fd0335
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout aa3b2b4c669205200615dd8a2cc4af4f81fd0335
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=sparc64 SHELL=/bin/bash drivers/usb/gadget/function/ drivers/virtio/ kernel/trace/

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


sparse warnings: (new ones prefixed by >>)
>> kernel/trace/trace_events_user.c:392:38: sparse: sparse: Using plain integer as NULL pointer
kernel/trace/trace_events_user.c:413:40: sparse: sparse: Using plain integer as NULL pointer
kernel/trace/trace_events_user.c:858:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:858:16: sparse: void [noderef] __rcu *
kernel/trace/trace_events_user.c:858:16: sparse: void *
kernel/trace/trace_events_user.c:922:13: sparse: sparse: cast removes address space '__user' of expression
kernel/trace/trace_events_user.c:922:13: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __user *buf @@ got char * @@
kernel/trace/trace_events_user.c:922:13: sparse: expected void [noderef] __user *buf
kernel/trace/trace_events_user.c:922:13: sparse: got char *
kernel/trace/trace_events_user.c:938:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:938:16: sparse: void [noderef] __rcu *
kernel/trace/trace_events_user.c:938:16: sparse: void *
kernel/trace/trace_events_user.c:965:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/trace_events_user.c:965:9: sparse: void [noderef] __rcu *
kernel/trace/trace_events_user.c:965:9: sparse: void *

vim +392 kernel/trace/trace_events_user.c

361
362 static const char *user_field_format(const char *type)
363 {
364 if (strcmp(type, "s64") == 0)
365 return "%lld";
366 if (strcmp(type, "u64") == 0)
367 return "%llu";
368 if (strcmp(type, "s32") == 0)
369 return "%d";
370 if (strcmp(type, "u32") == 0)
371 return "%u";
372 if (strcmp(type, "int") == 0)
373 return "%d";
374 if (strcmp(type, "unsigned int") == 0)
375 return "%u";
376 if (strcmp(type, "s16") == 0)
377 return "%d";
378 if (strcmp(type, "u16") == 0)
379 return "%u";
380 if (strcmp(type, "short") == 0)
381 return "%d";
382 if (strcmp(type, "unsigned short") == 0)
383 return "%u";
384 if (strcmp(type, "s8") == 0)
385 return "%d";
386 if (strcmp(type, "u8") == 0)
387 return "%u";
388 if (strcmp(type, "char") == 0)
389 return "%d";
390 if (strcmp(type, "unsigned char") == 0)
391 return "%u";
> 392 if (strstr(type, "char[") != 0)
393 return "%s";
394
395 /* Unknown, likely struct, allowed treat as 64-bit */
396 return "%llu";
397 }
398

--
0-DAY CI Kernel Test Service
https://01.org/lkp