kernel/events/ring_buffer.c:22:47: sparse: sparse: incorrect type in argument 2 (different base types)

From: kernel test robot

Date: Sun Mar 22 2026 - 11:39:51 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 113ae7b4decc6c2d95bdbbe52e615a0137ef7f9f
commit: c96fff391c095c11dc87dab35be72dee7d217cde perf/ring_buffer: Allow the EPOLLRDNORM flag for poll
date: 1 year ago
config: arc-randconfig-r122-20260322 (https://download.01.org/0day-ci/archive/20260322/202603222340.Ikvqm7r6-lkp@xxxxxxxxx/config)
compiler: arc-linux-gcc (GCC) 10.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260322/202603222340.Ikvqm7r6-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/202603222340.Ikvqm7r6-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> kernel/events/ring_buffer.c:22:47: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected int i @@ got restricted __poll_t @@
kernel/events/ring_buffer.c:22:47: sparse: expected int i
kernel/events/ring_buffer.c:22:47: sparse: got restricted __poll_t
kernel/events/ring_buffer.c:174:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/events/ring_buffer.c:174:14: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/ring_buffer.c:174:14: sparse: struct perf_buffer *
kernel/events/ring_buffer.c:174:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/events/ring_buffer.c:174:14: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/ring_buffer.c:174:14: sparse: struct perf_buffer *
kernel/events/ring_buffer.c:174:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/events/ring_buffer.c:174:14: sparse: struct perf_buffer [noderef] __rcu *
kernel/events/ring_buffer.c:174:14: sparse: struct perf_buffer *

vim +22 kernel/events/ring_buffer.c

19
20 static void perf_output_wakeup(struct perf_output_handle *handle)
21 {
> 22 atomic_set(&handle->rb->poll, EPOLLIN | EPOLLRDNORM);
23
24 handle->event->pending_wakeup = 1;
25
26 if (*perf_event_fasync(handle->event) && !handle->event->pending_kill)
27 handle->event->pending_kill = POLL_IN;
28
29 irq_work_queue(&handle->event->pending_irq);
30 }
31

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