All of lore.kernel.org
 help / color / mirror / Atom feed
* [peterz-queue:perf/core 10/15] kernel/events/core.c:7018:6: warning: variable 'user_extra' is used uninitialized whenever 'if' condition is true
@ 2025-08-11 16:50 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-08-11 16:50 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: llvm, oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/core
head:   965dafe6500a2b46311c810c9360c29c15e45677
commit: 189c97b1b2ab5bf33bdf635a70631526f1cd1bfd [10/15] perf: Split out the AUX buffer allocation
config: x86_64-buildonly-randconfig-003-20250811 (https://download.01.org/0day-ci/archive/20250812/202508120028.0P5MnCYq-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250812/202508120028.0P5MnCYq-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508120028.0P5MnCYq-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> kernel/events/core.c:7018:6: warning: variable 'user_extra' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    7018 |         if (rb_has_aux(rb)) {
         |             ^~~~~~~~~~~~~~
   kernel/events/core.c:7043:25: note: uninitialized use occurs here
    7043 |         perf_mmap_account(vma, user_extra, extra);
         |                                ^~~~~~~~~~
   kernel/events/core.c:7018:2: note: remove the 'if' if its condition is always false
    7018 |         if (rb_has_aux(rb)) {
         |         ^~~~~~~~~~~~~~~~~~~~~
    7019 |                 atomic_inc(&rb->aux_mmap_count);
         |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7020 | 
    7021 |         } else {
         |         ~~~~~~
   kernel/events/core.c:6978:17: note: initialize the variable 'user_extra' to silence this warning
    6978 |         long user_extra, extra;
         |                        ^
         |                         = 0
>> kernel/events/core.c:7018:6: warning: variable 'extra' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    7018 |         if (rb_has_aux(rb)) {
         |             ^~~~~~~~~~~~~~
   kernel/events/core.c:7043:37: note: uninitialized use occurs here
    7043 |         perf_mmap_account(vma, user_extra, extra);
         |                                            ^~~~~
   kernel/events/core.c:7018:2: note: remove the 'if' if its condition is always false
    7018 |         if (rb_has_aux(rb)) {
         |         ^~~~~~~~~~~~~~~~~~~~~
    7019 |                 atomic_inc(&rb->aux_mmap_count);
         |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7020 | 
    7021 |         } else {
         |         ~~~~~~
   kernel/events/core.c:6978:24: note: initialize the variable 'extra' to silence this warning
    6978 |         long user_extra, extra;
         |                               ^
         |                                = 0
   kernel/events/core.c:215:20: warning: unused function 'class_perf_ctx_lock_destructor' [-Wunused-function]
     215 | static inline void class_perf_ctx_lock_destructor(class_perf_ctx_lock_t *_T)
         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/events/core.c:219:1: warning: unused function 'class_perf_ctx_lock_constructor' [-Wunused-function]
     219 | class_perf_ctx_lock_constructor(struct perf_cpu_context *cpuctx,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   4 warnings generated.


vim +7018 kernel/events/core.c

  6972	
  6973	static int perf_mmap_aux(struct vm_area_struct *vma, struct perf_event *event,
  6974				 unsigned long nr_pages)
  6975	{
  6976		u64 aux_offset, aux_size;
  6977		struct perf_buffer *rb;
  6978		long user_extra, extra;
  6979		int ret, rb_flags = 0;
  6980	
  6981		rb = event->rb;
  6982		if (!rb)
  6983			return -EINVAL;
  6984	
  6985		guard(mutex)(&rb->aux_mutex);
  6986	
  6987		/*
  6988		 * AUX area mapping: if rb->aux_nr_pages != 0, it's already
  6989		 * mapped, all subsequent mappings should have the same size
  6990		 * and offset. Must be above the normal perf buffer.
  6991		 */
  6992		aux_offset = READ_ONCE(rb->user_page->aux_offset);
  6993		aux_size = READ_ONCE(rb->user_page->aux_size);
  6994	
  6995		if (aux_offset < perf_data_size(rb) + PAGE_SIZE)
  6996			return -EINVAL;
  6997	
  6998		if (aux_offset != vma->vm_pgoff << PAGE_SHIFT)
  6999			return -EINVAL;
  7000	
  7001		/* already mapped with a different offset */
  7002		if (rb_has_aux(rb) && rb->aux_pgoff != vma->vm_pgoff)
  7003			return -EINVAL;
  7004	
  7005		if (aux_size != nr_pages * PAGE_SIZE)
  7006			return -EINVAL;
  7007	
  7008		/* already mapped with a different size */
  7009		if (rb_has_aux(rb) && rb->aux_nr_pages != nr_pages)
  7010			return -EINVAL;
  7011	
  7012		if (!is_power_of_2(nr_pages))
  7013			return -EINVAL;
  7014	
  7015		if (!atomic_inc_not_zero(&rb->mmap_count))
  7016			return -EINVAL;
  7017	
> 7018		if (rb_has_aux(rb)) {
  7019			atomic_inc(&rb->aux_mmap_count);
  7020	
  7021		} else {
  7022			if (!perf_mmap_calc_limits(vma, &user_extra, &extra)) {
  7023				atomic_dec(&rb->mmap_count);
  7024				return -EPERM;
  7025			}
  7026	
  7027			WARN_ON(!rb && event->rb);
  7028	
  7029			if (vma->vm_flags & VM_WRITE)
  7030				rb_flags |= RING_BUFFER_WRITABLE;
  7031	
  7032			ret = rb_alloc_aux(rb, event, vma->vm_pgoff, nr_pages,
  7033					   event->attr.aux_watermark, rb_flags);
  7034			if (ret) {
  7035				atomic_dec(&rb->mmap_count);
  7036				return ret;
  7037			}
  7038	
  7039			atomic_set(&rb->aux_mmap_count, 1);
  7040			rb->aux_mmap_locked = extra;
  7041		}
  7042	
  7043		perf_mmap_account(vma, user_extra, extra);
  7044		atomic_inc(&event->mmap_count);
  7045	
  7046		return 0;
  7047	}
  7048	

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

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

only message in thread, other threads:[~2025-08-11 16:51 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-11 16:50 [peterz-queue:perf/core 10/15] kernel/events/core.c:7018:6: warning: variable 'user_extra' is used uninitialized whenever 'if' condition is true 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.