On Tue, Jun 25, 2024 at 11:03 PM kernel test robot <lkp@xxxxxxxxx> wrote: > > Hi Andrii, > > kernel test robot noticed the following build warnings: > > [auto build test WARNING on next-20240624] > [also build test WARNING on v6.10-rc5] > [cannot apply to perf-tools-next/perf-tools-next tip/perf/core perf-tools/perf-tools linus/master acme/perf/core v6.10-rc5 v6.10-rc4 v6.10-rc3] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch#_base_tree_information] > > url: https://github.com/intel-lab-lkp/linux/commits/Andrii-Nakryiko/uprobes-update-outdated-comment/20240626-001728 > base: next-20240624 > patch link: https://lore.kernel.org/r/20240625002144.3485799-5-andrii%40kernel.org > patch subject: [PATCH 04/12] uprobes: revamp uprobe refcounting and lifetime management > config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20240626/202406261300.ebbfM0XJ-lkp@xxxxxxxxx/config) > compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240626/202406261300.ebbfM0XJ-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/202406261300.ebbfM0XJ-lkp@xxxxxxxxx/ > > All warnings (new ones prefixed by >>): > > >> kernel/events/uprobes.c:638: warning: Function parameter or struct member 'uprobe' not described in '__get_uprobe' > >> kernel/events/uprobes.c:638: warning: expecting prototype for Caller has to make sure that(). Prototype was for __get_uprobe() instead > > > vim +638 kernel/events/uprobes.c > > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 625 > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 626 /** I shouldn't have used /** here, I'll fix this. > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 627 * Caller has to make sure that: > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 628 * a) either uprobe's refcnt is positive before this call; > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 629 * b) or uprobes_treelock is held (doesn't matter if for read or write), > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 630 * preventing uprobe's destructor from removing it from uprobes_tree. > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 631 * > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 632 * In the latter case, uprobe's destructor will "resurrect" uprobe instance if > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 633 * it detects that its refcount went back to being positive again inbetween it > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 634 * dropping to zero at some point and (potentially delayed) destructor > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 635 * callback actually running. > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 636 */ > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 637 static struct uprobe *__get_uprobe(struct uprobe *uprobe) > f231722a2b27ee Oleg Nesterov 2015-07-21 @638 { > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 639 s64 v; > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 640 > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 641 v = atomic64_add_return(UPROBE_REFCNT_GET, &uprobe->ref); > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 642 > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 643 /* > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 644 * If the highest bit is set, we need to clear it. If cmpxchg() fails, > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 645 * we don't retry because there is another CPU that just managed to > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 646 * update refcnt and will attempt the same "fix up". Eventually one of > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 647 * them will succeed to clear highset bit. > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 648 */ > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 649 if (unlikely(v < 0)) > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 650 (void)atomic64_cmpxchg(&uprobe->ref, v, v & ~(1ULL << 63)); > b9adadbcb8dfc8 Andrii Nakryiko 2024-06-24 651 > f231722a2b27ee Oleg Nesterov 2015-07-21 652 return uprobe; > f231722a2b27ee Oleg Nesterov 2015-07-21 653 } > f231722a2b27ee Oleg Nesterov 2015-07-21 654 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki