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.