All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Ian Rogers" <irogers@google.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v1 20/26] perf annotate: Use generic hashmap for sym_samples
Date: Fri, 13 Nov 2026 22:08:04 +0000	[thread overview]
Message-ID: <sashiko-outbox-213773@kernel.org> (raw)
In-Reply-To: <20261113214850.3329699-21-irogers@google.com>

Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [Medium] perf annotate: unused-but-set variable key in
  hashmap__for_each() loops
- [Low] perf annotate: DECLARE_HASHMAP() placed inside struct
  annotated_source kdoc
--

commit 0f2a111b069905a59af5949de2e5dc82c8c9ba96
Author: Ian Rogers <irogers@google.com>

perf annotate: Use generic hashmap for sym_samples

This commit converts annotated_source::samples to a typed hashmap
declared with DECLARE_HASHMAP(sym_samples_map, long,
struct sym_hist_entry *) and updates histogram entry freeing to use
hashmap__for_each().

> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index d11add6424dc3..c6325040452f0 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
> @@ -112,16 +112,16 @@ static struct annotated_source *annotated_source__new(void)
>  
>  static __maybe_unused void annotated_source__delete(struct annotated_source *src)
>  {
> -	struct hashmap_entry *cur;
> -	size_t bkt;
> +	long key;
> +	struct sym_hist_entry *val;
>  
>  	if (src == NULL)
>  		return;
>  
>  	if (src->samples) {
> -		hashmap__for_each_entry(src->samples, cur, bkt)
> -			zfree(&cur->pvalue);
> -		hashmap__free(src->samples);
> +		hashmap__for_each(src->samples, key, val)
> +			free(val);
> +		sym_samples_map__free(src->samples);
>  	}
>  	zfree(&src->histograms);
>  	free(src);
[ ... ]
> @@ -163,11 +163,11 @@ void symbol__annotate_zero_histograms(struct symbol *sym)
>  		memset(notes->src->histograms, 0,
>  		       notes->src->nr_histograms * sizeof(*notes->src->histograms));
>  		if (notes->src->samples) {
> -			struct hashmap_entry *cur;
> -			size_t bkt;
> +			long key;
> +			struct sym_hist_entry *val;
>  
> -			hashmap__for_each_entry(notes->src->samples, cur, bkt)
> -				zfree(&cur->pvalue);
> +			hashmap__for_each(notes->src->samples, key, val)
> +				free(val);
>  			hashmap__clear(notes->src->samples);
>  		}
>  	}

[Severity: Medium]
Does declaring key without __maybe_unused in annotated_source__delete()
and symbol__annotate_zero_histograms() break the build with
-Werror=unused-but-set-variable?

hashmap__for_each() assigns to key on each iteration, and neither
function reads it.

> diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
> index 1b47c1156b9a7..495c8602864cf 100644
> --- a/tools/perf/util/annotate.h
> +++ b/tools/perf/util/annotate.h
> @@ -312,10 +312,13 @@ struct cyc_hist {
>   * presented. It is deallocated right after symbol__{tui,tty,etc}_annotate
>   * returns.
>   */
> +struct sym_hist_entry;
> +DECLARE_HASHMAP(sym_samples_map, long, struct sym_hist_entry *);
> +
>  struct annotated_source {
>  	struct list_head	source;
>  	struct sym_hist		*histograms;
> -	struct hashmap	   	*samples;
> +	struct sym_samples_map	*samples;

[Severity: Low]
Does placing DECLARE_HASHMAP() between the struct annotated_source
kernel-doc comment and the struct definition break scripts/kernel-doc?

Moving DECLARE_HASHMAP(sym_samples_map, ...) above the kernel-doc comment
keeps the comment attached to struct annotated_source, and the forward
declaration of struct sym_hist_entry can be dropped because it is already
defined earlier in this header.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261113214850.3329699-1-irogers@google.com?part=20

  reply	other threads:[~2026-11-13 22:08 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-13 21:48 [PATCH v1 00/26] perf hashmap: Fix undefined behavior, remove ERR_PTR, and add type-safe generic hashmaps Ian Rogers
2026-11-13 21:48 ` [PATCH v1 01/26] perf threads: Fix uninitialized pointer put when thread removal misses Ian Rogers
2026-11-13 21:56   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 02/26] perf annotate: Fix sym_hist_entry memory leak when zeroing histograms Ian Rogers
2026-11-13 21:59   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 03/26] perf stat: Fix per_pkg_mask key leak on hashmap__add failure Ian Rogers
2026-11-13 21:55   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 04/26] perf build: Don't check difference of perf and libbpf hashmap Ian Rogers
2026-11-13 21:54   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 05/26] perf hashmap: Always build perf's hashmap and avoid libbpf symbol conflict Ian Rogers
2026-11-13 21:55   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 06/26] perf hashmap: Fix strict aliasing violations in hashmap Ian Rogers
2026-11-13 21:56   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 07/26] perf hashmap: Remove errptr usage from hashmap Ian Rogers
2026-11-13 22:01   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 08/26] perf hashmap: Introduce generic types and macros Ian Rogers
2026-11-13 22:01   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 09/26] perf fncache: Use generic hashmap for fncache Ian Rogers
2026-11-13 21:56   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 10/26] perf ftrace: Use generic hashmap for profile_hash Ian Rogers
2026-11-13 21:57   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 11/26] perf trace: Use generic hashmap for syscall_stats Ian Rogers
2026-11-13 22:04   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 12/26] perf trace: Use generic hashmap for bpf-trace-summary Ian Rogers
2026-11-13 21:58   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 13/26] perf lock: Use generic hashmap for slab_hash Ian Rogers
2026-11-13 21:57   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 14/26] perf stat: Use generic hashmap for per_pkg_mask Ian Rogers
2026-11-13 21:57   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 15/26] perf expr: Use generic hashmap for expr_ids Ian Rogers
2026-11-13 22:02   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 16/26] perf pmu: Use generic hashmap for pmu aliases Ian Rogers
2026-11-13 22:04   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 17/26] perf hwmon_pmu: Use generic hashmap for hwmon events Ian Rogers
2026-11-13 21:58   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 18/26] perf s390: Use generic hashmap for counter name cache Ian Rogers
2026-11-13 21:59   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 19/26] perf threads: Use generic hashmap for thread shards Ian Rogers
2026-11-13 22:01   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 20/26] perf annotate: Use generic hashmap for sym_samples Ian Rogers
2026-11-13 22:08   ` sashiko-bot [this message]
2026-11-13 21:48 ` [PATCH v1 21/26] perf annotate: Use generic hashmap for browser type_hash Ian Rogers
2026-11-13 21:59   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 22/26] perf annotate-data: Use generic hashmap for type_hist samples Ian Rogers
2026-11-13 22:00   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 23/26] perf inject: Use generic hashmap for aslr remap_addresses Ian Rogers
2026-11-13 21:59   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 24/26] perf inject: Use generic hashmap for aslr top_addresses Ian Rogers
2026-11-13 21:59   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 25/26] perf inject: Use generic hashmap for aslr evsel_orig_attrs Ian Rogers
2026-11-13 22:00   ` sashiko-bot
2026-11-13 21:48 ` [PATCH v1 26/26] perf hashmap: Remove untyped struct hashmap API Ian Rogers
2026-11-13 22:01   ` 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=sashiko-outbox-213773@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=irogers@google.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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.