From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A8BD3C1973 for ; Tue, 24 Mar 2026 06:37:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774334248; cv=none; b=l3gI/2H/7lFhtztZiXTxzpZa7NdvDc7wU0FqamaEMONneSu+aXVAayhLDECITpNWQoQsBKUWX24os7E2ntTi1jS7DyaApsJG3hEdmi989Qkqjw6Aqea+R8kggcdxpU4mk1TYcsZW4QYCLzVyhqKJfin/odaCy9oW4/u7CLwinHQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774334248; c=relaxed/simple; bh=tBVnsni6FBwdbJzcG8surcfxBeA8+CzYchACyOWsGLk=; h=Date:From:To:Cc:Subject:Message-ID; b=BxNpcr0OvOYNoxkoYPbC+3UrkOs8V5A7gVCRvYD984tNbM17Bnx0dq/CJdeRvBtt746xGmNKXObZqfDa0FnOfOBfkAOb8G8nCahsxcKa0Pvi0nmFY0+ssmBXQ5bW1s9wzKfjePl2D469wJ5hXMEM2lYLmPuI7ivrF/4I2pyft/Y= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=d4FHOXId; arc=none smtp.client-ip=192.198.163.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="d4FHOXId" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774334243; x=1805870243; h=date:from:to:cc:subject:message-id; bh=tBVnsni6FBwdbJzcG8surcfxBeA8+CzYchACyOWsGLk=; b=d4FHOXIdR7XD2tRVqqrq72jerWU3ZP2A4OcSMINK0Ogp5DyhXT00hwnJ dno5qHWFTBZaF01mQbrI7YdGg46jOSEBLKuUZ1bDfA5tK/KI+jvqcknpH 0/KKjpc9JLEUliorkCRvmq7Q5iw9dXxPjY8RDNDmYm8sRp/lFS6FL33rw Gsse1U1KvlrB1SnD3MEFsZU/5l2PPX3BLbWY2t9qOEOcbzUOJn33spc9E Q9im0aL6PX8mYHt9v3BY8XqrtD0En6aN+S8oWY7NLsy3p96FBPcfijYB/ EJzeBN/Iyb07/PqZlxk09K+0O0YbLBMsakzHCEj5WaeHwwZa2ILQGkI0K Q==; X-CSE-ConnectionGUID: X5OvfPdxSKW64n2iffD8OQ== X-CSE-MsgGUID: 8rqgP9FiTzO1E99nqGeT0Q== X-IronPort-AV: E=McAfee;i="6800,10657,11738"; a="75459992" X-IronPort-AV: E=Sophos;i="6.23,138,1770624000"; d="scan'208";a="75459992" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2026 23:37:21 -0700 X-CSE-ConnectionGUID: C4EO4zLnRi6jRNnrLnF+7w== X-CSE-MsgGUID: oous1B/gS5GVWGeQ39cYAw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,138,1770624000"; d="scan'208";a="247906598" Received: from lkp-server01.sh.intel.com (HELO 3905d212be1b) ([10.239.97.150]) by fmviesa001.fm.intel.com with ESMTP; 23 Mar 2026 23:37:19 -0700 Received: from kbuild by 3905d212be1b with local (Exim 4.98.2) (envelope-from ) id 1w4vO9-0000000041N-2eT7; Tue, 24 Mar 2026 06:37:17 +0000 Date: Tue, 24 Mar 2026 14:37:14 +0800 From: kernel test robot To: oe-kbuild@lists.linux.dev Cc: lkp@intel.com, Julia Lawall Subject: kernel/events/core.c:5733:1-20: iterator with update on line 5768 Message-ID: <202603241448.s83P6uJv-lkp@intel.com> User-Agent: s-nail v14.9.25 Precedence: bulk X-Mailing-List: oe-kbuild@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: BCC: lkp@intel.com CC: oe-kbuild-all@lists.linux.dev CC: linux-kernel@vger.kernel.org TO: Peter Zijlstra CC: Ravi Bangoria tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: c369299895a591d96745d6492d4888259b004a9e commit: 3e8671e00e57b3d006ed8ae5ef055807506e44b2 perf: Simplify perf_event_release_kernel() date: 12 months ago :::::: branch date: 33 hours ago :::::: commit date: 12 months ago config: x86_64-randconfig-r062-20260324 (https://download.01.org/0day-ci/archive/20260324/202603241448.s83P6uJv-lkp@intel.com/config) compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261) 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 | Reported-by: Julia Lawall | Closes: https://lore.kernel.org/r/202603241448.s83P6uJv-lkp@intel.com/ cocci warnings: (new ones prefixed by >>) >> kernel/events/core.c:5733:1-20: iterator with update on line 5768 vim +5733 kernel/events/core.c c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5689 c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5690 /* c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5691 * Kill an event dead; while event:refcount will preserve the event c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5692 * object, it will not preserve its functionality. Once the last 'user' c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5693 * gives up the object, we'll destroy the thing. c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5694 */ c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5695 int perf_event_release_kernel(struct perf_event *event) c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5696 { a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5697 struct perf_event_context *ctx = event->ctx; c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5698 struct perf_event *child, *tmp; c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5699 a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5700 /* bd27568117664b8 kernel/events/core.c Peter Zijlstra 2022-10-08 5701 * If we got here through err_alloc: free_event(event); we will not bd27568117664b8 kernel/events/core.c Peter Zijlstra 2022-10-08 5702 * have attached to a context yet. a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5703 */ a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5704 if (!ctx) { a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5705 WARN_ON_ONCE(event->attach_state & a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5706 (PERF_ATTACH_CONTEXT|PERF_ATTACH_GROUP)); a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5707 goto no_ctx; a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5708 } a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5709 f86977620ee4635 kernel/events/core.c Jiri Olsa 2014-08-01 5710 if (!is_kernel_event(event)) f86977620ee4635 kernel/events/core.c Jiri Olsa 2014-08-01 5711 perf_remove_from_owner(event); 8882135bcd332f2 kernel/perf_event.c Peter Zijlstra 2010-11-09 5712 5fa7c8ec57f70a7 kernel/events/core.c Peter Zijlstra 2016-01-26 5713 ctx = perf_event_ctx_lock(event); a83fe28e2e45392 kernel/events/core.c Peter Zijlstra 2015-01-29 5714 WARN_ON_ONCE(ctx->parent_ctx); 683ede43dd412c6 kernel/events/core.c Peter Zijlstra 2014-05-05 5715 683ede43dd412c6 kernel/events/core.c Peter Zijlstra 2014-05-05 5716 /* d8a8cfc76919b6c kernel/events/core.c Peter Zijlstra 2017-03-16 5717 * Mark this event as STATE_DEAD, there is no external reference to it a69b0ca4ac3bf54 kernel/events/core.c Peter Zijlstra 2016-02-24 5718 * anymore. 683ede43dd412c6 kernel/events/core.c Peter Zijlstra 2014-05-05 5719 * a69b0ca4ac3bf54 kernel/events/core.c Peter Zijlstra 2016-02-24 5720 * Anybody acquiring event->child_mutex after the below loop _must_ a69b0ca4ac3bf54 kernel/events/core.c Peter Zijlstra 2016-02-24 5721 * also see this, most importantly inherit_event() which will avoid a69b0ca4ac3bf54 kernel/events/core.c Peter Zijlstra 2016-02-24 5722 * placing more children on the list. 683ede43dd412c6 kernel/events/core.c Peter Zijlstra 2014-05-05 5723 * c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5724 * Thus this guarantees that we will in fact observe and kill _ALL_ c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5725 * child events. 683ede43dd412c6 kernel/events/core.c Peter Zijlstra 2014-05-05 5726 */ 517e6a301f34613 kernel/events/core.c Peter Zijlstra 2022-11-24 5727 perf_remove_from_context(event, DETACH_GROUP|DETACH_DEAD); a69b0ca4ac3bf54 kernel/events/core.c Peter Zijlstra 2016-02-24 5728 a69b0ca4ac3bf54 kernel/events/core.c Peter Zijlstra 2016-02-24 5729 perf_event_ctx_unlock(event, ctx); 683ede43dd412c6 kernel/events/core.c Peter Zijlstra 2014-05-05 5730 c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5731 again: c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5732 mutex_lock(&event->child_mutex); c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 @5733 list_for_each_entry(child, &event->child_list, child_list) { c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5734 /* c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5735 * Cannot change, child events are not migrated, see the c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5736 * comment with perf_event_ctx_lock_nested(). c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5737 */ 506458efaf153c1 kernel/events/core.c Will Deacon 2017-10-24 5738 ctx = READ_ONCE(child->ctx); c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5739 /* c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5740 * Since child_mutex nests inside ctx::mutex, we must jump c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5741 * through hoops. We start by grabbing a reference on the ctx. c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5742 * c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5743 * Since the event cannot get freed while we hold the c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5744 * child_mutex, the context must also exist and have a !0 c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5745 * reference count. c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5746 */ c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5747 get_ctx(ctx); c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5748 c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5749 /* c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5750 * Now that we have a ctx ref, we can drop child_mutex, and c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5751 * acquire ctx::mutex without fear of it going away. Then we c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5752 * can re-acquire child_mutex. c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5753 */ c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5754 mutex_unlock(&event->child_mutex); c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5755 mutex_lock(&ctx->mutex); c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5756 mutex_lock(&event->child_mutex); c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5757 c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5758 /* c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5759 * Now that we hold ctx::mutex and child_mutex, revalidate our c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5760 * state, if child is still the first entry, it didn't get freed c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5761 * and we can continue doing so. c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5762 */ c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5763 tmp = list_first_entry_or_null(&event->child_list, c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5764 struct perf_event, child_list); c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5765 if (tmp == child) { 0a00a43b8c200df kernel/events/core.c Peter Zijlstra 2025-01-17 5766 perf_remove_from_context(child, DETACH_GROUP | DETACH_CHILD); 3e8671e00e57b3d kernel/events/core.c Peter Zijlstra 2025-01-17 5767 } else { 3e8671e00e57b3d kernel/events/core.c Peter Zijlstra 2025-01-17 @5768 child = NULL; a6fa941d94b411b kernel/events/core.c Al Viro 2012-08-20 5769 } a6fa941d94b411b kernel/events/core.c Al Viro 2012-08-20 5770 c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5771 mutex_unlock(&event->child_mutex); c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5772 mutex_unlock(&ctx->mutex); 3e8671e00e57b3d kernel/events/core.c Peter Zijlstra 2025-01-17 5773 3e8671e00e57b3d kernel/events/core.c Peter Zijlstra 2025-01-17 5774 if (child) { 3e8671e00e57b3d kernel/events/core.c Peter Zijlstra 2025-01-17 5775 /* Last reference unless ->pending_task work is pending */ 3e8671e00e57b3d kernel/events/core.c Peter Zijlstra 2025-01-17 5776 put_event(child); 3e8671e00e57b3d kernel/events/core.c Peter Zijlstra 2025-01-17 5777 } c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5778 put_ctx(ctx); 74751ef5c1912eb kernel/events/core.c Haifeng Xu 2024-05-13 5779 c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5780 goto again; c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5781 } c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5782 mutex_unlock(&event->child_mutex); c6e5b73242d2d91 kernel/events/core.c Peter Zijlstra 2016-01-15 5783 a4f4bb6d0c69d0b kernel/events/core.c Peter Zijlstra 2016-02-24 5784 no_ctx: 56799bc03565873 kernel/events/core.c Frederic Weisbecker 2025-03-04 5785 /* 56799bc03565873 kernel/events/core.c Frederic Weisbecker 2025-03-04 5786 * Last reference unless ->pending_task work is pending on this event 56799bc03565873 kernel/events/core.c Frederic Weisbecker 2025-03-04 5787 * or any of its children. 56799bc03565873 kernel/events/core.c Frederic Weisbecker 2025-03-04 5788 */ 56799bc03565873 kernel/events/core.c Frederic Weisbecker 2025-03-04 5789 put_event(event); 683ede43dd412c6 kernel/events/core.c Peter Zijlstra 2014-05-05 5790 return 0; a6fa941d94b411b kernel/events/core.c Al Viro 2012-08-20 5791 } 683ede43dd412c6 kernel/events/core.c Peter Zijlstra 2014-05-05 5792 EXPORT_SYMBOL_GPL(perf_event_release_kernel); a6fa941d94b411b kernel/events/core.c Al Viro 2012-08-20 5793 :::::: The code at line 5733 was first introduced by commit :::::: c6e5b73242d2d9172ea880483bc4ba7ffca0cfb2 perf: Synchronously clean up child events :::::: TO: Peter Zijlstra :::::: CC: Ingo Molnar -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki