lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Sat, 11 Nov 2023 22:55:16 +0800
From:   Philip Li <philip.li@...el.com>
To:     kernel test robot <lkp@...el.com>
CC:     Christoph Hellwig <hch@....de>, <oe-kbuild-all@...ts.linux.dev>,
        <linux-kernel@...r.kernel.org>
Subject: Re: kernel/events/core.c:4881:24: sparse: sparse: incorrect type in
 assignment (different base types)

On Sat, Nov 11, 2023 at 10:43:17PM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   3ca112b71f35dd5d99fc4571a56b5fc6f0c15814
> commit: ee219b946e4bf7df2d2c68dfaae1bdaa360ec2ea uapi: turn __poll_t sparse checks on by default
> date:   5 years ago
> config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20231111/202311112205.oMWYlOQe-lkp@intel.com/config)
> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231111/202311112205.oMWYlOQe-lkp@intel.com/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@...el.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202311112205.oMWYlOQe-lkp@intel.com/

Kindly ignore this report, the reported commit is not the cause of the
warning. Sorry for the false info.

> 
> sparse warnings: (new ones prefixed by >>)
>    kernel/events/core.c:570:26: sparse: sparse: function 'perf_pmu_name' with external linkage has definition
>    kernel/events/core.c:1034:1: sparse: sparse: symbol 'perf_cgroup_switch' was not declared. Should it be static?
>    kernel/events/core.c:1132:22: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got int * @@
>    kernel/events/core.c:1132:22: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:1132:22: sparse:     got int *
>    kernel/events/core.c:1139:22: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got int * @@
>    kernel/events/core.c:1139:22: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:1139:22: sparse:     got int *
>    kernel/events/core.c:1382:15: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:1382:15: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:1382:15: sparse:    struct perf_event_context *
>    kernel/events/core.c:1395:28: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:1395:28: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:1395:28: sparse:    struct perf_event_context *
>    kernel/events/core.c:3083:18: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:3083:18: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:3083:18: sparse:    struct perf_event_context *
>    kernel/events/core.c:3084:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:3084:23: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:3084:23: sparse:    struct perf_event_context *
>    kernel/events/core.c:3115:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:3115:25: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:3115:25: sparse:    struct perf_event_context *
>    kernel/events/core.c:3116:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:3116:25: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:3116:25: sparse:    struct perf_event_context *
>    kernel/events/core.c:3139:43: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:3139:43: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:3139:43: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:3150:43: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:3150:43: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:3150:43: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:4119:26: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:4119:26: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:4119:26: sparse:     got struct perf_cpu_context *
> >> kernel/events/core.c:4881:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __poll_t [usertype] events @@     got int @@
>    kernel/events/core.c:4881:24: sparse:     expected restricted __poll_t [usertype] events
>    kernel/events/core.c:4881:24: sparse:     got int
>    kernel/events/core.c:5068:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:5068:22: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/core.c:5068:22: sparse:    struct ring_buffer *
>    kernel/events/core.c:5197:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:5197:14: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/core.c:5197:14: sparse:    struct ring_buffer *
>    kernel/events/core.c:5230:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:5230:14: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/core.c:5230:14: sparse:    struct ring_buffer *
>    kernel/events/core.c:5287:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:5287:14: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/core.c:5287:14: sparse:    struct ring_buffer *
>    kernel/events/core.c:5373:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:5373:14: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/core.c:5373:14: sparse:    struct ring_buffer *
>    kernel/events/core.c:5386:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:5386:14: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/core.c:5386:14: sparse:    struct ring_buffer *
>    kernel/events/core.c:6646:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:6646:23: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:6646:23: sparse:    struct perf_event_context *
>    kernel/events/core.c:6736:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:6736:13: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/core.c:6736:13: sparse:    struct ring_buffer *
>    kernel/events/core.c:6744:43: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:6744:43: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:6744:43: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:7399:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:7399:23: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:7399:23: sparse:    struct perf_event_context *
>    kernel/events/core.c:8079:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:8079:9: sparse:    struct swevent_hlist [noderef] <asn:4> *
>    kernel/events/core.c:8079:9: sparse:    struct swevent_hlist *
>    kernel/events/core.c:9408:35: sparse: sparse: incorrect type in return expression (different address spaces) @@     expected struct perf_cpu_context [noderef] <asn:3> * @@     got struct perf_cpu_context *[noderef] pmu_cpu_context @@
>    kernel/events/core.c:9408:35: sparse:     expected struct perf_cpu_context [noderef] <asn:3> *
>    kernel/events/core.c:9408:35: sparse:     got struct perf_cpu_context *[noderef] pmu_cpu_context
>    kernel/events/core.c:9425:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] <asn:3> *__pdata @@     got struct perf_cpu_context *[noderef] pmu_cpu_context @@
>    kernel/events/core.c:9425:24: sparse:     expected void [noderef] <asn:3> *__pdata
>    kernel/events/core.c:9425:24: sparse:     got struct perf_cpu_context *[noderef] pmu_cpu_context
>    kernel/events/core.c:9440:1: sparse: sparse: symbol 'dev_attr_nr_addr_filters' was not declared. Should it be static?
>    kernel/events/core.c:9491:26: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:9491:26: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:9491:26: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:9570:32: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected int *[noderef] pmu_disable_count @@     got int [noderef] <asn:3> * @@
>    kernel/events/core.c:9570:32: sparse:     expected int *[noderef] pmu_disable_count
>    kernel/events/core.c:9570:32: sparse:     got int [noderef] <asn:3> *
>    kernel/events/core.c:9610:30: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct perf_cpu_context *[noderef] pmu_cpu_context @@     got struct perf_cpu_context [noderef] <asn:3> * @@
>    kernel/events/core.c:9610:30: sparse:     expected struct perf_cpu_context *[noderef] pmu_cpu_context
>    kernel/events/core.c:9610:30: sparse:     got struct perf_cpu_context [noderef] <asn:3> *
>    kernel/events/core.c:9615:30: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct perf_cpu_context *[noderef] pmu_cpu_context @@     got struct perf_cpu_context [noderef] <asn:3> * @@
>    kernel/events/core.c:9615:30: sparse:     expected struct perf_cpu_context *[noderef] pmu_cpu_context
>    kernel/events/core.c:9615:30: sparse:     got struct perf_cpu_context [noderef] <asn:3> *
>    kernel/events/core.c:9622:26: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:9622:26: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:9622:26: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:9675:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] <asn:3> *__pdata @@     got int *[noderef] pmu_disable_count @@
>    kernel/events/core.c:9675:24: sparse:     expected void [noderef] <asn:3> *__pdata
>    kernel/events/core.c:9675:24: sparse:     got int *[noderef] pmu_disable_count
>    kernel/events/core.c:9696:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] <asn:3> *__pdata @@     got int *[noderef] pmu_disable_count @@
>    kernel/events/core.c:9696:24: sparse:     expected void [noderef] <asn:3> *__pdata
>    kernel/events/core.c:9696:24: sparse:     got int *[noderef] pmu_disable_count
>    kernel/events/core.c:10897:20: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:10897:20: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:10897:20: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:10898:20: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:10898:20: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:10898:20: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:11068:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:11068:9: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:11068:9: sparse:    struct perf_event_context *
>    kernel/events/core.c:11178:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/core.c:11178:17: sparse:    struct perf_event_context [noderef] <asn:4> *
>    kernel/events/core.c:11178:17: sparse:    struct perf_event_context *
>    kernel/events/core.c:11566:6: sparse: sparse: symbol 'perf_swevent_init_cpu' was not declared. Should it be static?
>    kernel/events/core.c:11631:26: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:11631:26: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:11631:26: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:156:9: sparse: sparse: context imbalance in 'perf_ctx_lock' - wrong count at exit
>    kernel/events/core.c:164:17: sparse: sparse: context imbalance in 'perf_ctx_unlock' - unexpected unlock
>    kernel/events/core.c:149:16: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:149:16: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:149:16: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:149:16: sparse: sparse: dereference of noderef expression
>    kernel/events/core.c:149:16: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:149:16: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:149:16: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:149:16: sparse: sparse: dereference of noderef expression
>    kernel/events/core.c:1132:22: sparse: sparse: dereference of noderef expression
>    kernel/events/core.c:1139:22: sparse: sparse: dereference of noderef expression
>    kernel/events/core.c: note: in included file (through include/linux/rculist.h, include/linux/dcache.h, include/linux/fs.h):
>    include/linux/rcupdate.h:686:9: sparse: sparse: context imbalance in 'perf_lock_task_context' - different lock contexts for basic block
>    kernel/events/core.c:1429:17: sparse: sparse: context imbalance in 'perf_pin_task_context' - unexpected unlock
>    kernel/events/core.c:149:16: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] <asn:3> *__vpp_verify @@     got struct perf_cpu_context * @@
>    kernel/events/core.c:149:16: sparse:     expected void const [noderef] <asn:3> *__vpp_verify
>    kernel/events/core.c:149:16: sparse:     got struct perf_cpu_context *
>    kernel/events/core.c:149:16: sparse: sparse: dereference of noderef expression
>    kernel/events/core.c:2538:9: sparse: sparse: context imbalance in '__perf_install_in_context' - wrong count at exit
> --
> >> kernel/events/ring_buffer.c:22:39: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected int i @@     got restricted __poll_t [usertype] @@
>    kernel/events/ring_buffer.c:22:39: sparse:     expected int i
>    kernel/events/ring_buffer.c:22:39: sparse:     got restricted __poll_t [usertype]
>    kernel/events/ring_buffer.c:137:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/ring_buffer.c:137:14: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/ring_buffer.c:137:14: sparse:    struct ring_buffer *
>    kernel/events/ring_buffer.c:137:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/ring_buffer.c:137:14: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/ring_buffer.c:137:14: sparse:    struct ring_buffer *
>    kernel/events/ring_buffer.c:137:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
>    kernel/events/ring_buffer.c:137:14: sparse:    struct ring_buffer [noderef] <asn:4> *
>    kernel/events/ring_buffer.c:137:14: sparse:    struct ring_buffer *
>    kernel/events/ring_buffer.c:105:1: warning: 'inline' is not at beginning of declaration [-Wold-style-declaration]
>      105 | static bool __always_inline
>          | ^~~~~~
>    kernel/events/ring_buffer.c:116:1: warning: 'inline' is not at beginning of declaration [-Wold-style-declaration]
>      116 | static int __always_inline
>          | ^~~~~~
>    kernel/events/ring_buffer.c:416:1: warning: 'inline' is not at beginning of declaration [-Wold-style-declaration]
>      416 | static bool __always_inline rb_need_aux_wakeup(struct ring_buffer *rb)
>          | ^~~~~~
> 
> vim +4881 kernel/events/core.c
> 
> 0793a61d4df8da kernel/perf_counter.c Thomas Gleixner           2008-12-04  4862  
> 9dd957485d7d89 kernel/events/core.c  Al Viro                   2017-07-03  4863  static __poll_t perf_poll(struct file *file, poll_table *wait)
> 0793a61d4df8da kernel/perf_counter.c Thomas Gleixner           2008-12-04  4864  {
> cdd6c482c9ff9c kernel/perf_event.c   Ingo Molnar               2009-09-21  4865  	struct perf_event *event = file->private_data;
> 76369139ceb955 kernel/events/core.c  Frederic Weisbecker       2011-05-19  4866  	struct ring_buffer *rb;
> a9a08845e9acbd kernel/events/core.c  Linus Torvalds            2018-02-11  4867  	__poll_t events = EPOLLHUP;
> c7138f37f905bb kernel/perf_counter.c Peter Zijlstra            2009-03-24  4868  
> e708d7ad807374 kernel/events/core.c  Sebastian Andrzej Siewior 2014-08-04  4869  	poll_wait(file, &event->waitq, wait);
> 179033b3e064d2 kernel/events/core.c  Jiri Olsa                 2014-08-07  4870  
> dc633982ff3f4f kernel/events/core.c  Jiri Olsa                 2014-09-12  4871  	if (is_event_hup(event))
> 179033b3e064d2 kernel/events/core.c  Jiri Olsa                 2014-08-07  4872  		return events;
> c7138f37f905bb kernel/perf_counter.c Peter Zijlstra            2009-03-24  4873  
> 10c6db110d0eb4 kernel/events/core.c  Peter Zijlstra            2011-11-26  4874  	/*
> 9bb5d40cd93c9d kernel/events/core.c  Peter Zijlstra            2013-06-04  4875  	 * Pin the event->rb by taking event->mmap_mutex; otherwise
> 9bb5d40cd93c9d kernel/events/core.c  Peter Zijlstra            2013-06-04  4876  	 * perf_event_set_output() can swizzle our rb and make us miss wakeups.
> 10c6db110d0eb4 kernel/events/core.c  Peter Zijlstra            2011-11-26  4877  	 */
> 10c6db110d0eb4 kernel/events/core.c  Peter Zijlstra            2011-11-26  4878  	mutex_lock(&event->mmap_mutex);
> 9bb5d40cd93c9d kernel/events/core.c  Peter Zijlstra            2013-06-04  4879  	rb = event->rb;
> 9bb5d40cd93c9d kernel/events/core.c  Peter Zijlstra            2013-06-04  4880  	if (rb)
> 76369139ceb955 kernel/events/core.c  Frederic Weisbecker       2011-05-19 @4881  		events = atomic_xchg(&rb->poll, 0);
> 10c6db110d0eb4 kernel/events/core.c  Peter Zijlstra            2011-11-26  4882  	mutex_unlock(&event->mmap_mutex);
> 0793a61d4df8da kernel/perf_counter.c Thomas Gleixner           2008-12-04  4883  	return events;
> 0793a61d4df8da kernel/perf_counter.c Thomas Gleixner           2008-12-04  4884  }
> 0793a61d4df8da kernel/perf_counter.c Thomas Gleixner           2008-12-04  4885  
> 
> :::::: The code at line 4881 was first introduced by commit
> :::::: 76369139ceb955deefc509e6e12ce9d6ce50ccab perf: Split up buffer handling from core code
> 
> :::::: TO: Frederic Weisbecker <fweisbec@...il.com>
> :::::: CC: Ingo Molnar <mingo@...e.hu>
> 
> -- 
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists