All of lore.kernel.org
 help / color / mirror / Atom feed
* kernel/trace/trace_events_user.c:593:31: sparse: sparse: incorrect type in assignment (different address spaces)
@ 2022-03-28 11:14 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-03-28 11:14 UTC (permalink / raw)
  To: Beau Belgrave; +Cc: kbuild-all, linux-kernel, Steven Rostedt (Google)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   ae085d7f9365de7da27ab5c0d16b12d51ea7fca9
commit: 0279400ad38d858ed68f5d787385f6122d4170b2 user_events: Optimize writing events by only copying data once
date:   6 weeks ago
config: i386-randconfig-s001-20220328 (https://download.01.org/0day-ci/archive/20220328/202203281937.Po855SGa-lkp@intel.com/config)
compiler: gcc-9 (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0279400ad38d858ed68f5d787385f6122d4170b2
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 0279400ad38d858ed68f5d787385f6122d4170b2
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/acpi/apei/ drivers/gpu/drm/ kernel/trace/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)
   kernel/trace/trace_events_user.c:409:38: sparse: sparse: Using plain integer as NULL pointer
   kernel/trace/trace_events_user.c:430:40: sparse: sparse: Using plain integer as NULL pointer
>> kernel/trace/trace_events_user.c:593:31: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void *[assigned] udata @@     got void [noderef] __user * @@
   kernel/trace/trace_events_user.c:593:31: sparse:     expected void *[assigned] udata
   kernel/trace/trace_events_user.c:593:31: sparse:     got void [noderef] __user *
   kernel/trace/trace_events_user.c:1064:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/trace/trace_events_user.c:1064:16: sparse:    void [noderef] __rcu *
   kernel/trace/trace_events_user.c:1064:16: sparse:    void *
   kernel/trace/trace_events_user.c:1122:13: sparse: sparse: cast removes address space '__user' of expression
   kernel/trace/trace_events_user.c:1122:13: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void [noderef] __user *buf @@     got char * @@
   kernel/trace/trace_events_user.c:1122:13: sparse:     expected void [noderef] __user *buf
   kernel/trace/trace_events_user.c:1122:13: sparse:     got char *
   kernel/trace/trace_events_user.c:1138:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/trace/trace_events_user.c:1138:16: sparse:    void [noderef] __rcu *
   kernel/trace/trace_events_user.c:1138:16: sparse:    void *
   kernel/trace/trace_events_user.c:1165:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/trace/trace_events_user.c:1165:9: sparse:    void [noderef] __rcu *
   kernel/trace/trace_events_user.c:1165:9: sparse:    void *

vim +593 kernel/trace/trace_events_user.c

   571	
   572	#ifdef CONFIG_PERF_EVENTS
   573	static void user_event_bpf(struct user_event *user, struct iov_iter *i)
   574	{
   575		struct user_bpf_context context;
   576		struct user_bpf_iter bpf_i;
   577		char fast_data[MAX_STACK_BPF_DATA];
   578		void *temp = NULL;
   579	
   580		if ((user->flags & FLAG_BPF_ITER) && iter_is_iovec(i)) {
   581			/* Raw iterator */
   582			context.data_type = USER_BPF_DATA_ITER;
   583			context.data_len = i->count;
   584			context.iter = &bpf_i;
   585	
   586			bpf_i.iov_offset = i->iov_offset;
   587			bpf_i.iov = i->iov;
   588			bpf_i.nr_segs = i->nr_segs;
   589		} else if (i->nr_segs == 1 && iter_is_iovec(i)) {
   590			/* Single buffer from user */
   591			context.data_type = USER_BPF_DATA_USER;
   592			context.data_len = i->count;
 > 593			context.udata = i->iov->iov_base + i->iov_offset;
   594		} else {
   595			/* Multi buffer from user */
   596			struct iov_iter copy = *i;
   597			size_t copy_size = min_t(size_t, i->count, MAX_BPF_COPY_SIZE);
   598	
   599			context.data_type = USER_BPF_DATA_KERNEL;
   600			context.kdata = fast_data;
   601	
   602			if (unlikely(copy_size > sizeof(fast_data))) {
   603				temp = kmalloc(copy_size, GFP_NOWAIT);
   604	
   605				if (temp)
   606					context.kdata = temp;
   607				else
   608					copy_size = sizeof(fast_data);
   609			}
   610	
   611			context.data_len = copy_nofault(context.kdata,
   612							copy_size, &copy);
   613		}
   614	
   615		trace_call_bpf(&user->call, &context);
   616	
   617		kfree(temp);
   618	}
   619	

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-03-28 11:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-28 11:14 kernel/trace/trace_events_user.c:593:31: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.