All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Rogers <irogers@google.com>
To: irogers@google.com, acme@kernel.org, elver@google.com,
	namhyung@kernel.org
Cc: adrian.hunter@intel.com, james.clark@linaro.org,
	jolsa@kernel.org,  justinstitt@google.com,
	linux-kernel@vger.kernel.org,  linux-perf-users@vger.kernel.org,
	ljs@kernel.org, llvm@lists.linux.dev,  mingo@redhat.com,
	morbo@google.com, nathan@kernel.org,  ndesaulniers@google.com,
	peterz@infradead.org
Subject: [PATCH v3 00/17] tools/perf: Adopt kernel compiler-context-analysis.h annotations
Date: Fri, 16 Oct 2026 10:30:49 -0700	[thread overview]
Message-ID: <20261016173106.679725-1-irogers@google.com> (raw)
In-Reply-To: <20261013222622.1822619-1-irogers@google.com>

The perf tool previously added Clang thread-safety annotations in
tools/perf/util/mutex.h (GUARDED_BY, LOCKABLE, EXCLUSIVE_LOCK_FUNCTION,
UNLOCK_FUNCTION, etc.). Since then, the Linux kernel has adopted a
unified set of static context analysis macros and attributes in
include/linux/compiler-context-analysis.h (context_lock_struct,
__guarded_by, __acquires, __releases, __must_hold, etc.).

This series makes tools/include/linux/compiler-context-analysis.h
functional by synchronizing it and the required compiler_types.h helpers
with the kernel headers, converts tools/perf from its custom mutex.h
macros to the kernel-style compiler-context-analysis.h annotations, and
expands context analysis coverage across comm, dso/dsos, thread/threads,
config, intel-tpebs, env, and maps. Along the way, separate preparatory
patches fix an unlocked __dsos__add() call and TOCTOU race in
__machine__addnew_vdso(), avoid dropping _dso__data_open_lock in
dso__list_del() under REFCNT_CHECKING, switch dso__data_open_lock and
tpebs_mtx to DEFINE_MUTEX(), add a read-lock fast path to
dsos__findnew_id(), fix an unlocked read of tpebs_reader_thread and
double-close of tpebs_cmd.out in intel-tpebs, and avoid a potential
read-to-write deadlock in maps__load_first() and out-of-bounds access in
__maps__remove().

This series was developed and reviewed with assistance from an AI coding
agent (Gemini 3.1 Pro) and reviewed with Sashiko.

v3:
  - Rebase onto perf-tools-next (converting the newly added
    dso__find_binary_type() lock annotations in util/dso.c).
  - Separate bug fixes, DEFINE_MUTEX() cleanups, and improvements (vdso,
    dso_data, dso__data_open_lock, dsos__findnew_id, intel-tpebs,
    tpebs_mtx, maps) from the annotation patches.
  - Move AI coding assistant attribution to the cover letter and drop
    per-commit Assisted-by tags per linux-next
    Documentation/process/coding-assistants.rst.
  - Add Marco Elver's Reviewed-by to patch 1.
  - Define __diag_clang_23() and Clang ASM_INPUT_G/ASM_INPUT_RM/
    ASM_OUTPUT_RM overrides in tools/include/linux/compiler-gcc.h
    (patch 2).
  - Probe for -Wthread-safety-pointer/-Wthread-safety-beta in
    Makefile.config (patch 5).
  - Pass write_locked to __dsos__find() (patch 7).
  - Pass struct dso_data * to close_data_fd() and dso__list_del() to
    remove the REFCNT_CHECKING dso pointer from struct dso_data and
    avoid dropping dso__data_open_lock in dso__list_del(), and include
    <assert.h> in util/dso.c (patch 8).
  - Re-validate DSO lookup under the write lock in dsos__findnew_id()
    via __dsos__findnew_id(), and handle NULL dso_id in
    dso__needs_improve_id(), __dso__improve_id(), and dso_id__cmp()
    (patch 10).
  - Reset tpebs_cmd.out = -1 if start_command() fails and include
    <stdint.h>, <stdlib.h>, <string.h>, and <unistd.h> in
    util/intel-tpebs.c (patch 13).
  - Bounds-check the index in __maps__remove() (freeing maps_by_name if
    out of bounds) (patch 16).

v2:
  - Use -c rather than -E when probing for
    -fexperimental-late-parse-attributes in Makefile.config to avoid
    -Werror,-Wunused-command-line-argument.
  - Acquire machine->dsos.lock in write mode across duplicate checking,
    dso__set_long_name(), and __dsos__add() in __machine__addnew_vdso().
  - Avoid dropping dso__data_open_lock in dso__list_del() under
    REFCNT_CHECKING.
  - Pass tpebs_cmd.out directly to __sample_reader() and set
    tpebs_cmd.out = -1 in evsel__tpebs_open() to avoid a double-close in
    tpebs_stop(), and clarify the config_set_mutex comment.
  - Drop maps__lock before calling map__load() in maps__load_first() to
    avoid a read-to-write self-deadlock when loading kernel maps inserts
    additional trampoline maps.

Ian Rogers (17):
  compiler-context-analysis: Avoid unused parameter warning in
    _context_unsafe_alias()
  tools headers compiler: Synchronize compiler_types.h with the kernel
    sources
  tools headers: Synchronize linux/compiler-context-analysis.h with the
    kernel sources
  perf mutex: Use kernel style compiler-context-analysis.h annotations
  perf build: Enable additional Clang thread-safety flags
  perf comm: Add __guarded_by annotations to struct comm_strs
  perf vdso: Fix unlocked __dsos__add() and race in
    __machine__addnew_vdso()
  perf dso: Pass dso_data to close_data_fd() and dso__list_del()
  perf dso: Use DEFINE_MUTEX for dso__data_open_lock
  perf dsos: Use read lock fast path in dsos__findnew_id()
  perf dso: Expand context analysis annotations
  perf thread: Expand context analysis annotations to threads and
    namespaces_lock
  perf intel-tpebs: Fix race in tpebs_stop() and tpebs_cmd.out fd
    handling
  perf intel-tpebs: Use DEFINE_MUTEX for tpebs_mtx
  perf config, intel-tpebs, env: Add __guarded_by and __must_hold
    annotations
  perf maps: Fix lock inversion in maps__load_first() and bounds check
    in __maps__remove()
  perf maps: Add context analysis annotations

 include/linux/compiler-context-analysis.h     |   2 +-
 .../include/linux/compiler-context-analysis.h | 518 ++++++++++++++++--
 tools/include/linux/compiler-gcc.h            |  72 ++-
 tools/include/linux/compiler.h                |  50 +-
 tools/include/linux/compiler_types.h          | 206 ++++++-
 tools/perf/Makefile.config                    |   8 +-
 tools/perf/builtin-sched.c                    |  16 +-
 tools/perf/builtin-top.c                      |   4 +-
 tools/perf/check-headers.sh                   |   1 +
 tools/perf/tests/dso-data.c                   |   4 +
 tools/perf/util/annotate.c                    |   4 +-
 tools/perf/util/annotate.h                    |   8 +-
 tools/perf/util/bpf-event.h                   |   5 +-
 tools/perf/util/comm.c                        |  10 +-
 tools/perf/util/config.c                      |  43 +-
 tools/perf/util/dso.c                         | 140 +++--
 tools/perf/util/dso.h                         |  15 +-
 tools/perf/util/dsos.c                        |  31 +-
 tools/perf/util/dsos.h                        |  12 +-
 tools/perf/util/env.c                         |   1 +
 tools/perf/util/env.h                         |  19 +-
 tools/perf/util/intel-tpebs.c                 | 104 ++--
 tools/perf/util/libbfd.c                      |   4 +-
 tools/perf/util/maps.c                        | 147 +++--
 tools/perf/util/mutex.c                       |   4 +-
 tools/perf/util/mutex.h                       |  90 +--
 tools/perf/util/rwsem.c                       |   8 +-
 tools/perf/util/rwsem.h                       |  10 +-
 tools/perf/util/thread.c                      |  10 +-
 tools/perf/util/thread.h                      |  30 +-
 tools/perf/util/threads.c                     |   4 +
 tools/perf/util/threads.h                     |   6 +-
 tools/perf/util/vdso.c                        |  17 +-
 33 files changed, 1144 insertions(+), 459 deletions(-)

-- 
2.56.0.212.g129ede20d9-goog


  parent reply	other threads:[~2026-10-16 17:31 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-13 18:24 [PATCH v1 00/10] tools/perf: Adopt kernel compiler-context-analysis.h annotations Ian Rogers
2026-10-13 18:24 ` [PATCH v1 01/10] compiler-context-analysis: Avoid unused parameter warning in _context_unsafe_alias() Ian Rogers
2026-10-13 18:30   ` sashiko-bot
2026-10-13 19:44   ` Bart Van Assche
2026-10-13 22:10     ` Ian Rogers
2026-10-13 22:14       ` Bart Van Assche
2026-10-13 22:26         ` Ian Rogers
2026-10-13 22:47     ` Bart Van Assche
2026-10-13 22:59       ` Ian Rogers
2026-10-14  9:59         ` Peter Zijlstra
2026-10-13 18:24 ` [PATCH v1 02/10] tools headers compiler: Synchronize compiler_types.h with the kernel sources Ian Rogers
2026-10-13 18:33   ` sashiko-bot
2026-10-13 18:24 ` [PATCH v1 03/10] tools headers: Synchronize linux/compiler-context-analysis.h " Ian Rogers
2026-10-13 18:34   ` sashiko-bot
2026-10-13 18:24 ` [PATCH v1 04/10] perf mutex: Use kernel style compiler-context-analysis.h annotations Ian Rogers
2026-10-13 18:36   ` sashiko-bot
2026-10-13 18:24 ` [PATCH v1 05/10] perf build: Enable additional Clang thread-safety flags Ian Rogers
2026-10-13 18:35   ` sashiko-bot
2026-10-13 18:24 ` [PATCH v1 06/10] perf comm: Add __guarded_by annotations to struct comm_strs Ian Rogers
2026-10-13 18:35   ` sashiko-bot
2026-10-13 18:24 ` [PATCH v1 07/10] perf dso: Fix unlocked __dsos__add() in vdso and expand lock annotations Ian Rogers
2026-10-13 18:41   ` sashiko-bot
2026-10-13 18:24 ` [PATCH v1 08/10] perf thread: Expand context analysis annotations to threads and namespaces_lock Ian Rogers
2026-10-13 18:35   ` sashiko-bot
2026-10-13 18:24 ` [PATCH v1 09/10] perf config, intel-tpebs, env: Add __guarded_by and __must_hold annotations Ian Rogers
2026-10-13 18:42   ` sashiko-bot
2026-10-13 18:24 ` [PATCH v1 10/10] perf maps: Add context analysis annotations Ian Rogers
2026-10-13 18:43   ` sashiko-bot
2026-10-13 22:26 ` [PATCH v2 00/10] tools/perf: Adopt kernel compiler-context-analysis.h annotations Ian Rogers
2026-10-13 22:26   ` [PATCH v2 01/10] compiler-context-analysis: Avoid unused parameter warning in _context_unsafe_alias() Ian Rogers
2026-10-13 22:30     ` sashiko-bot
2026-10-14  5:38     ` Marco Elver
2026-10-13 22:26   ` [PATCH v2 02/10] tools headers compiler: Synchronize compiler_types.h with the kernel sources Ian Rogers
2026-10-13 22:36     ` sashiko-bot
2026-10-13 22:26   ` [PATCH v2 03/10] tools headers: Synchronize linux/compiler-context-analysis.h " Ian Rogers
2026-10-13 22:34     ` sashiko-bot
2026-10-13 22:26   ` [PATCH v2 04/10] perf mutex: Use kernel style compiler-context-analysis.h annotations Ian Rogers
2026-10-13 22:42     ` sashiko-bot
2026-10-13 22:26   ` [PATCH v2 05/10] perf build: Enable additional Clang thread-safety flags Ian Rogers
2026-10-13 22:34     ` sashiko-bot
2026-10-13 22:26   ` [PATCH v2 06/10] perf comm: Add __guarded_by annotations to struct comm_strs Ian Rogers
2026-10-13 22:36     ` sashiko-bot
2026-10-13 22:26   ` [PATCH v2 07/10] perf dso: Fix unlocked __dsos__add() in vdso and expand lock annotations Ian Rogers
2026-10-13 22:43     ` sashiko-bot
2026-10-13 22:26   ` [PATCH v2 08/10] perf thread: Expand context analysis annotations to threads and namespaces_lock Ian Rogers
2026-10-13 22:36     ` sashiko-bot
2026-10-13 22:26   ` [PATCH v2 09/10] perf config, intel-tpebs, env: Add __guarded_by and __must_hold annotations Ian Rogers
2026-10-13 22:41     ` sashiko-bot
2026-10-13 22:26   ` [PATCH v2 10/10] perf maps: Add context analysis annotations Ian Rogers
2026-10-13 22:38     ` sashiko-bot
2026-10-13 22:52   ` [PATCH v2 00/10] tools/perf: Adopt kernel compiler-context-analysis.h annotations Bart Van Assche
2026-10-13 23:09     ` Ian Rogers
2026-10-13 23:18       ` Bart Van Assche
2026-10-13 23:26         ` Ian Rogers
2026-10-16 17:30   ` Ian Rogers [this message]
2026-10-16 17:30     ` [PATCH v3 01/17] compiler-context-analysis: Avoid unused parameter warning in _context_unsafe_alias() Ian Rogers
2026-10-16 17:36       ` sashiko-bot
2026-10-16 17:30     ` [PATCH v3 02/17] tools headers compiler: Synchronize compiler_types.h with the kernel sources Ian Rogers
2026-10-16 17:38       ` sashiko-bot
2026-10-16 17:30     ` [PATCH v3 03/17] tools headers: Synchronize linux/compiler-context-analysis.h " Ian Rogers
2026-10-16 17:38       ` sashiko-bot
2026-10-16 17:30     ` [PATCH v3 04/17] perf mutex: Use kernel style compiler-context-analysis.h annotations Ian Rogers
2026-10-16 17:45       ` sashiko-bot
2026-10-16 17:30     ` [PATCH v3 05/17] perf build: Enable additional Clang thread-safety flags Ian Rogers
2026-10-16 17:37       ` sashiko-bot
2026-10-16 17:30     ` [PATCH v3 06/17] perf comm: Add __guarded_by annotations to struct comm_strs Ian Rogers
2026-10-16 17:41       ` sashiko-bot
2026-10-16 17:30     ` [PATCH v3 07/17] perf vdso: Fix unlocked __dsos__add() and race in __machine__addnew_vdso() Ian Rogers
2026-10-16 17:42       ` sashiko-bot
2026-10-16 17:30     ` [PATCH v3 08/17] perf dso: Pass dso_data to close_data_fd() and dso__list_del() Ian Rogers
2026-10-16 17:40       ` sashiko-bot
2026-10-16 17:30     ` [PATCH v3 09/17] perf dso: Use DEFINE_MUTEX for dso__data_open_lock Ian Rogers
2026-10-16 17:40       ` sashiko-bot
2026-10-16 17:30     ` [PATCH v3 10/17] perf dsos: Use read lock fast path in dsos__findnew_id() Ian Rogers
2026-10-16 17:41       ` sashiko-bot
2026-10-16 17:31     ` [PATCH v3 11/17] perf dso: Expand context analysis annotations Ian Rogers
2026-10-16 17:43       ` sashiko-bot
2026-10-16 17:31     ` [PATCH v3 12/17] perf thread: Expand context analysis annotations to threads and namespaces_lock Ian Rogers
2026-10-16 17:43       ` sashiko-bot
2026-10-16 17:31     ` [PATCH v3 13/17] perf intel-tpebs: Fix race in tpebs_stop() and tpebs_cmd.out fd handling Ian Rogers
2026-10-16 17:45       ` sashiko-bot
2026-10-16 17:31     ` [PATCH v3 14/17] perf intel-tpebs: Use DEFINE_MUTEX for tpebs_mtx Ian Rogers
2026-10-16 17:48       ` sashiko-bot
2026-10-16 17:31     ` [PATCH v3 15/17] perf config, intel-tpebs, env: Add __guarded_by and __must_hold annotations Ian Rogers
2026-10-16 17:47       ` sashiko-bot
2026-10-16 17:31     ` [PATCH v3 16/17] perf maps: Fix lock inversion in maps__load_first() and bounds check in __maps__remove() Ian Rogers
2026-10-16 17:44       ` sashiko-bot
2026-10-16 17:31     ` [PATCH v3 17/17] perf maps: Add context analysis annotations Ian Rogers
2026-10-16 22:16     ` [PATCH v4 00/17] tools/perf: Adopt kernel compiler-context-analysis.h annotations Ian Rogers
2026-10-16 22:16       ` [PATCH v4 01/17] compiler-context-analysis: Avoid unused parameter warning in _context_unsafe_alias() Ian Rogers
2026-10-16 22:20         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 02/17] tools headers compiler: Synchronize compiler_types.h with the kernel sources Ian Rogers
2026-10-16 22:23         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 03/17] tools headers: Synchronize linux/compiler-context-analysis.h " Ian Rogers
2026-10-16 22:20         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 04/17] perf mutex: Use kernel style compiler-context-analysis.h annotations Ian Rogers
2026-10-16 22:23         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 05/17] perf build: Enable additional Clang thread-safety flags Ian Rogers
2026-10-16 22:22         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 06/17] perf comm: Add __guarded_by annotations to struct comm_strs Ian Rogers
2026-10-16 22:20         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 07/17] perf vdso: Fix unlocked __dsos__add() and race in __machine__addnew_vdso() Ian Rogers
2026-10-16 22:29         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 08/17] perf dso: Pass dso_data to close_data_fd() and dso__list_del() Ian Rogers
2026-10-16 22:25         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 09/17] perf dso: Use DEFINE_MUTEX for dso__data_open_lock Ian Rogers
2026-10-16 22:20         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 10/17] perf dsos: Use read lock fast path in dsos__findnew_id() Ian Rogers
2026-10-16 22:23         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 11/17] perf dso: Expand context analysis annotations Ian Rogers
2026-10-16 22:21         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 12/17] perf thread: Expand context analysis annotations to threads and namespaces_lock Ian Rogers
2026-10-16 22:21         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 13/17] perf intel-tpebs: Fix race in tpebs_stop() and tpebs_cmd.out fd handling Ian Rogers
2026-10-16 22:28         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 14/17] perf intel-tpebs: Use DEFINE_MUTEX for tpebs_mtx Ian Rogers
2026-10-16 22:21         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 15/17] perf config, intel-tpebs, env: Add __guarded_by and __must_hold annotations Ian Rogers
2026-10-16 22:22         ` sashiko-bot
2026-10-16 22:16       ` [PATCH v4 16/17] perf maps: Fix lock inversion in maps__load_first() and bounds check in __maps__remove() Ian Rogers
2026-10-16 22:24         ` sashiko-bot
2026-10-16 22:17       ` [PATCH v4 17/17] perf maps: Add context analysis annotations Ian Rogers
2026-10-16 22:22         ` sashiko-bot

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=20261016173106.679725-1-irogers@google.com \
    --to=irogers@google.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=elver@google.com \
    --cc=james.clark@linaro.org \
    --cc=jolsa@kernel.org \
    --cc=justinstitt@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=ljs@kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=mingo@redhat.com \
    --cc=morbo@google.com \
    --cc=namhyung@kernel.org \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --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.