[PATCHES v7 0/2] perf c2c hardening

Arnaldo Carvalho de Melo <[email protected]> Tue, 4 Aug 2026 15:58:28 -0300
Newsgroups org.kernel.vger.linux-perf-users,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Hi,

Fixes for 'perf c2c' found by the sashiko-bot and
Opencode:mimo-v2.5-free AI reviewers, both using Chris Mason's
review-prompts:

Patch 1 fixes three silent failure modes in hpp_list__parse().

Patch 2 fixes a format list leak: when c2c_hists__[re]init() fails
partway through, entries registered via perf_hpp_list__column_register()
and perf_hpp_list__register_sort_field() are left on the hpp_list.

Please consider merging,

- Arnaldo

Changes since v6:

- c2c_hists__reinit() has the same leak: it clears the list then calls
  hpp_list__parse(), which can register formats before failing, and
  neither the function nor its callers clean up on failure.  Add the same
  cleanup-on-failure pattern to close this gap.

Changes since v5:

- The second v5 patch didn't got thru, resending the same contents as v5.

Changes since v4:

- Replace %m with str_error_r(-ret) as suggested by Sashiko.

Changes since v3:

 - Use 'goto out' to break out from both the switch and the for loop in
   __hpp_list__parse() as noticed by sashiko.

Changes since v2:

  - Added the string.h and stdlib.h missing headers.
  - Addressed sashiko comment on PARSE_LIST, turning it into a function
    and handling all errors returned from _fn().

Changes since v1:

  - Addressed sashiko-bot [Medium] finding: the early exits added by v1
    skip perf_hpp__setup_output_field().
  - Dismissed sashiko-bot [Low] finding (missing string.h/stdlib.h):
    strdup() and free() were already used in this function before this
    patch; string2.h (included at the top of the file) pulls in string.h.
    No new library calls were introduced.
  - Subject updated to reflect the additional caller fixes.

This series was developed with AI assistance (Claude:Sonnet 4.6,
Opencode:mimo-v2.5-free).


Arnaldo Carvalho de Melo (2):
  perf c2c: Fix error masking, OOM, and unchecked caller errors in
    hpp_list__parse()
  perf c2c: Clean up registered formats on c2c_hists__init() and
    c2c_hists__reinit() failure

 tools/perf/builtin-c2c.c | 105 +++++++++++++++++++++++++++++----------
 tools/perf/util/sort.c   |  38 ++++++++------
 2 files changed, 100 insertions(+), 43 deletions(-)

-- 
2.55.0