All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: [peterz-queue:perf/core 10/15] kernel/events/core.c:7018:6: warning: variable 'user_extra' is used uninitialized whenever 'if' condition is true
Date: Tue, 12 Aug 2025 00:50:01 +0800	[thread overview]
Message-ID: <202508120028.0P5MnCYq-lkp@intel.com> (raw)

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

                 reply	other threads:[~2025-08-11 16:51 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202508120028.0P5MnCYq-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.