tree:
https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/core
head: 0da503cd07380952599b67ded6efe030d78ea42d
commit: c7d4112e9f0e69edd649665836ce72008b95ab9f [18/22] perf: Add support for SIGTRAP on
perf events
config: arc-randconfig-s032-20210414 (attached as .config)
compiler: arc-elf-gcc (GCC) 9.3.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.3-280-g2cd6d34e-dirty
#
https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?...
git remote add peterz-queue
https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git
git fetch --no-tags peterz-queue perf/core
git checkout c7d4112e9f0e69edd649665836ce72008b95ab9f
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=arc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/events/core.c:584:26: sparse: sparse: function 'perf_pmu_name' with
external linkage has definition
kernel/events/core.c:1467:15: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:1467:15: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:1467:15: sparse: struct perf_event_context *
kernel/events/core.c:1480:28: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:1480:28: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:1480:28: sparse: struct perf_event_context *
kernel/events/core.c:3430:18: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:3430:18: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:3430:18: sparse: struct perf_event_context *
kernel/events/core.c:3431:23: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:3431:23: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:3431:23: sparse: struct perf_event_context *
kernel/events/core.c:3479:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:3479:25: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:3479:25: sparse: struct perf_event_context *
kernel/events/core.c:3480:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:3480:25: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:3480:25: sparse: struct perf_event_context *
kernel/events/core.c:4673:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:4673:25: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:4673:25: sparse: struct perf_event_context *
kernel/events/core.c:5935:9: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5935:9: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/core.c:5935:9: sparse: struct perf_buffer *
kernel/events/core.c:5411:24: sparse: sparse: incorrect type in assignment (different
base types) @@ expected restricted __poll_t [usertype] events @@ got int @@
kernel/events/core.c:5641:22: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5641:22: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/core.c:5641:22: sparse: struct perf_buffer *
kernel/events/core.c:5777:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5777:14: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/core.c:5777:14: sparse: struct perf_buffer *
kernel/events/core.c:5810:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5810:14: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/core.c:5810:14: sparse: struct perf_buffer *
kernel/events/core.c:5867:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5867:14: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/core.c:5867:14: sparse: struct perf_buffer *
kernel/events/core.c:5953:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5953:14: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/core.c:5953:14: sparse: struct perf_buffer *
kernel/events/core.c:5966:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5966:14: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/core.c:5966:14: sparse: struct perf_buffer *
> kernel/events/core.c:6418:22: sparse: sparse: incorrect type in
assignment (different address spaces) @@ expected void [noderef] __user *[addressable]
[assigned] _addr @@ got void * @@
kernel/events/core.c:6418:22: sparse:
expected void [noderef] __user *[addressable] [assigned] _addr
kernel/events/core.c:6418:22: sparse: got void *
kernel/events/core.c:6682:6: sparse: sparse: symbol 'perf_pmu_snapshot_aux' was
not declared. Should it be static?
kernel/events/core.c:7601:23: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:7601:23: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:7601:23: sparse: struct perf_event_context *
kernel/events/core.c:7653:23: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:7653:23: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:7653:23: sparse: struct perf_event_context *
kernel/events/core.c:7692:13: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:7692:13: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/core.c:7692:13: sparse: struct perf_buffer *
kernel/events/core.c:7797:61: sparse: sparse: incorrect type in argument 2 (different
address spaces) @@ expected struct task_struct *p @@ got struct task_struct
[noderef] __rcu *real_parent @@
kernel/events/core.c:7797:61: sparse: expected struct task_struct *p
kernel/events/core.c:7797:61: sparse: got struct task_struct [noderef] __rcu
*real_parent
kernel/events/core.c:7799:61: sparse: sparse: incorrect type in argument 2 (different
address spaces) @@ expected struct task_struct *p @@ got struct task_struct
[noderef] __rcu *real_parent @@
kernel/events/core.c:7799:61: sparse: expected struct task_struct *p
kernel/events/core.c:7799:61: sparse: got struct task_struct [noderef] __rcu
*real_parent
kernel/events/core.c:8504:23: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:8504:23: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:8504:23: sparse: struct perf_event_context *
kernel/events/core.c:9469:9: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:9469:9: sparse: struct swevent_hlist [noderef] __rcu *
kernel/events/core.c:9469:9: sparse: struct swevent_hlist *
kernel/events/core.c:9508:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:9508:17: sparse: struct swevent_hlist [noderef] __rcu *
kernel/events/core.c:9508:17: sparse: struct swevent_hlist *
kernel/events/core.c:9689:23: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:9689:23: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:9689:23: sparse: struct perf_event_context *
kernel/events/core.c:10874:1: sparse: sparse: symbol 'dev_attr_nr_addr_filters'
was not declared. Should it be static?
kernel/events/core.c:12630:9: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:12630:9: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:12630:9: sparse: struct perf_event_context *
kernel/events/core.c:12740:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:12740:17: sparse: struct perf_event_context [noderef] __rcu *
kernel/events/core.c:12740:17: sparse: struct perf_event_context *
kernel/events/core.c:13170:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:13170:17: sparse: struct swevent_hlist [noderef] __rcu *
kernel/events/core.c:13170:17: sparse: struct swevent_hlist *
kernel/events/core.c:166:9: sparse: sparse: context imbalance in
'perf_ctx_lock' - wrong count at exit
kernel/events/core.c:174:17: sparse: sparse: context imbalance in
'perf_ctx_unlock' - unexpected unlock
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:706:9: sparse: sparse: context imbalance in
'perf_lock_task_context' - different lock contexts for basic block
kernel/events/core.c:1514:17: sparse: sparse: context imbalance in
'perf_pin_task_context' - unexpected unlock
kernel/events/core.c:2827:9: sparse: sparse: context imbalance in
'__perf_install_in_context' - wrong count at exit
kernel/events/core.c:4645:17: sparse: sparse: context imbalance in
'find_get_context' - unexpected unlock
kernel/events/core.c: note: in included file:
kernel/events/internal.h:197:46: sparse: sparse: incorrect type in argument 2
(different address spaces) @@ expected void const [noderef] __user *from @@ got
void const *src @@
kernel/events/core.c:9318:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:9318:17: sparse: struct swevent_hlist [noderef] __rcu *
kernel/events/core.c:9318:17: sparse: struct swevent_hlist *
kernel/events/core.c:9338:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:9338:17: sparse: struct swevent_hlist [noderef] __rcu *
kernel/events/core.c:9338:17: sparse: struct swevent_hlist *
kernel/events/core.c:9458:16: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:9458:16: sparse: struct swevent_hlist [noderef] __rcu *
kernel/events/core.c:9458:16: sparse: struct swevent_hlist *
kernel/events/core.c:9458:16: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:9458:16: sparse: struct swevent_hlist [noderef] __rcu *
kernel/events/core.c:9458:16: sparse: struct swevent_hlist *
kernel/events/core.c:9458:16: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:9458:16: sparse: struct swevent_hlist [noderef] __rcu *
kernel/events/core.c:9458:16: sparse: struct swevent_hlist *
vim +6418 kernel/events/core.c
6394
6395 static void perf_sigtrap(struct perf_event *event)
6396 {
6397 struct kernel_siginfo info;
6398
6399 /*
6400 * We'd expect this to only occur if the irq_work is delayed and either
6401 * ctx->task or current has changed in the meantime. This can be the
6402 * case on architectures that do not implement arch_irq_work_raise().
6403 */
6404 if (WARN_ON_ONCE(event->ctx->task != current))
6405 return;
6406
6407 /*
6408 * perf_pending_event() can race with the task exiting.
6409 */
6410 if (current->flags & PF_EXITING)
6411 return;
6412
6413 clear_siginfo(&info);
6414 info.si_signo = SIGTRAP;
6415 info.si_code = TRAP_PERF;
6416 info.si_errno = event->attr.type;
6417 info.si_perf = event->attr.sig_data;
6418 info.si_addr = (void *)event->sig_addr;
6419 force_sig_info(&info);
6420 }
6421
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org