All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] perf: Clean up and fix potential mem leak
@ 2022-09-06  3:29 Shang XiaoJing
  2022-09-06  3:29 ` [PATCH v2 1/3] perf clean: Add same_cmd_with_prefix helper Shang XiaoJing
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Shang XiaoJing @ 2022-09-06  3:29 UTC (permalink / raw)
  To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa,
	namhyung, linux-perf-users, linux-kernel
  Cc: shangxiaojing

Some clean up in perf.c and builtin-c2c.c.

changes from v2:
- clear omissible free label in c2c_he_zalloc.

Shang XiaoJing (3):
  perf clean: Add same_cmd_with_prefix helper
  perf c2c: Add helpers to get counts of loads or stores
  perf c2c: Prevent potential memory leak in c2c_he_zalloc

 tools/perf/builtin-c2c.c | 77 +++++++++++++++++++---------------------
 tools/perf/perf.c        | 12 +++++--
 2 files changed, 46 insertions(+), 43 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/3] perf clean: Add same_cmd_with_prefix helper
  2022-09-06  3:29 [PATCH v2 0/3] perf: Clean up and fix potential mem leak Shang XiaoJing
@ 2022-09-06  3:29 ` Shang XiaoJing
  2022-09-06  3:29 ` [PATCH v2 2/3] perf c2c: Add helpers to get counts of loads or stores Shang XiaoJing
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Shang XiaoJing @ 2022-09-06  3:29 UTC (permalink / raw)
  To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa,
	namhyung, linux-perf-users, linux-kernel
  Cc: shangxiaojing

Wrap repeated code in helper function same_cmd_with_prefix for more
clearly.

Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/perf.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/tools/perf/perf.c b/tools/perf/perf.c
index c21b3973641a..7af135dea1cd 100644
--- a/tools/perf/perf.c
+++ b/tools/perf/perf.c
@@ -99,10 +99,16 @@ struct pager_config {
 	int val;
 };
 
+static bool same_cmd_with_prefix(const char *var, struct pager_config *c,
+				  const char *header)
+{
+	return (strstarts(var, header) && !strcmp(var + strlen(header), c->cmd));
+}
+
 static int pager_command_config(const char *var, const char *value, void *data)
 {
 	struct pager_config *c = data;
-	if (strstarts(var, "pager.") && !strcmp(var + 6, c->cmd))
+	if (same_cmd_with_prefix(var, c, "pager."))
 		c->val = perf_config_bool(var, value);
 	return 0;
 }
@@ -121,9 +127,9 @@ static int check_pager_config(const char *cmd)
 static int browser_command_config(const char *var, const char *value, void *data)
 {
 	struct pager_config *c = data;
-	if (strstarts(var, "tui.") && !strcmp(var + 4, c->cmd))
+	if (same_cmd_with_prefix(var, c, "tui."))
 		c->val = perf_config_bool(var, value);
-	if (strstarts(var, "gtk.") && !strcmp(var + 4, c->cmd))
+	if (same_cmd_with_prefix(var, c, "gtk."))
 		c->val = perf_config_bool(var, value) ? 2 : 0;
 	return 0;
 }
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 2/3] perf c2c: Add helpers to get counts of loads or stores
  2022-09-06  3:29 [PATCH v2 0/3] perf: Clean up and fix potential mem leak Shang XiaoJing
  2022-09-06  3:29 ` [PATCH v2 1/3] perf clean: Add same_cmd_with_prefix helper Shang XiaoJing
@ 2022-09-06  3:29 ` Shang XiaoJing
  2022-09-06  4:28   ` Leo Yan
  2022-09-06  3:29 ` [PATCH v2 3/3] perf c2c: Prevent potential memory leak in c2c_he_zalloc Shang XiaoJing
  2022-09-06 12:43 ` [PATCH v2 0/3] perf: Clean up and fix potential mem leak Arnaldo Carvalho de Melo
  3 siblings, 1 reply; 8+ messages in thread
From: Shang XiaoJing @ 2022-09-06  3:29 UTC (permalink / raw)
  To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa,
	namhyung, linux-perf-users, linux-kernel
  Cc: shangxiaojing

Wrap repeated code in helper functions get_load_llc_misses,
get_load_cache_hits. For consistence, helper function get_stores is
wraped as well.

Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/builtin-c2c.c | 65 +++++++++++++++++-----------------------
 1 file changed, 28 insertions(+), 37 deletions(-)

diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
index 653e13b5037e..12f272811487 100644
--- a/tools/perf/builtin-c2c.c
+++ b/tools/perf/builtin-c2c.c
@@ -673,28 +673,35 @@ STAT_FN(ld_l2hit)
 STAT_FN(ld_llchit)
 STAT_FN(rmt_hit)
 
-static uint64_t total_records(struct c2c_stats *stats)
+static uint64_t get_load_llc_misses(struct c2c_stats *stats)
 {
-	uint64_t lclmiss, ldcnt, total;
-
-	lclmiss  = stats->lcl_dram +
-		   stats->rmt_dram +
-		   stats->rmt_hitm +
-		   stats->rmt_hit;
+	return stats->lcl_dram +
+	       stats->rmt_dram +
+	       stats->rmt_hitm +
+	       stats->rmt_hit;
+}
 
-	ldcnt    = lclmiss +
-		   stats->ld_fbhit +
-		   stats->ld_l1hit +
-		   stats->ld_l2hit +
-		   stats->ld_llchit +
-		   stats->lcl_hitm;
+static uint64_t get_load_cache_hits(struct c2c_stats *stats)
+{
+	return stats->ld_fbhit +
+	       stats->ld_l1hit +
+	       stats->ld_l2hit +
+	       stats->ld_llchit +
+	       stats->lcl_hitm;
+}
 
-	total    = ldcnt +
-		   stats->st_l1hit +
-		   stats->st_l1miss +
-		   stats->st_na;
+static uint64_t get_stores(struct c2c_stats *stats)
+{
+	return stats->st_l1hit +
+	       stats->st_l1miss +
+	       stats->st_na;
+}
 
-	return total;
+static uint64_t total_records(struct c2c_stats *stats)
+{
+	return get_load_llc_misses(stats) +
+	       get_load_cache_hits(stats) +
+	       get_stores(stats);
 }
 
 static int
@@ -731,21 +738,8 @@ tot_recs_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
 
 static uint64_t total_loads(struct c2c_stats *stats)
 {
-	uint64_t lclmiss, ldcnt;
-
-	lclmiss  = stats->lcl_dram +
-		   stats->rmt_dram +
-		   stats->rmt_hitm +
-		   stats->rmt_hit;
-
-	ldcnt    = lclmiss +
-		   stats->ld_fbhit +
-		   stats->ld_l1hit +
-		   stats->ld_l2hit +
-		   stats->ld_llchit +
-		   stats->lcl_hitm;
-
-	return ldcnt;
+	return get_load_llc_misses(stats) +
+	       get_load_cache_hits(stats);
 }
 
 static int
@@ -2370,10 +2364,7 @@ static void print_c2c__display_stats(FILE *out)
 	int llc_misses;
 	struct c2c_stats *stats = &c2c.hists.stats;
 
-	llc_misses = stats->lcl_dram +
-		     stats->rmt_dram +
-		     stats->rmt_hit +
-		     stats->rmt_hitm;
+	llc_misses = get_load_llc_misses(stats);
 
 	fprintf(out, "=================================================\n");
 	fprintf(out, "            Trace Event Information              \n");
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 3/3] perf c2c: Prevent potential memory leak in c2c_he_zalloc
  2022-09-06  3:29 [PATCH v2 0/3] perf: Clean up and fix potential mem leak Shang XiaoJing
  2022-09-06  3:29 ` [PATCH v2 1/3] perf clean: Add same_cmd_with_prefix helper Shang XiaoJing
  2022-09-06  3:29 ` [PATCH v2 2/3] perf c2c: Add helpers to get counts of loads or stores Shang XiaoJing
@ 2022-09-06  3:29 ` Shang XiaoJing
  2022-09-06  4:31   ` Leo Yan
  2022-09-06 12:43 ` [PATCH v2 0/3] perf: Clean up and fix potential mem leak Arnaldo Carvalho de Melo
  3 siblings, 1 reply; 8+ messages in thread
From: Shang XiaoJing @ 2022-09-06  3:29 UTC (permalink / raw)
  To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa,
	namhyung, linux-perf-users, linux-kernel
  Cc: shangxiaojing

Free allocated resources when zalloc is failed for members in c2c_he, to
prevent potential memory leak in c2c_he_zalloc.

Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
---
changes in v2:
- clear omissible free labels due to zero allocated c2c_he.
---
 tools/perf/builtin-c2c.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
index 12f272811487..f35a47b2dbe4 100644
--- a/tools/perf/builtin-c2c.c
+++ b/tools/perf/builtin-c2c.c
@@ -146,15 +146,15 @@ static void *c2c_he_zalloc(size_t size)
 
 	c2c_he->cpuset = bitmap_zalloc(c2c.cpus_cnt);
 	if (!c2c_he->cpuset)
-		return NULL;
+		goto out_free;
 
 	c2c_he->nodeset = bitmap_zalloc(c2c.nodes_cnt);
 	if (!c2c_he->nodeset)
-		return NULL;
+		goto out_free;
 
 	c2c_he->node_stats = zalloc(c2c.nodes_cnt * sizeof(*c2c_he->node_stats));
 	if (!c2c_he->node_stats)
-		return NULL;
+		goto out_free;
 
 	init_stats(&c2c_he->cstats.lcl_hitm);
 	init_stats(&c2c_he->cstats.rmt_hitm);
@@ -163,6 +163,12 @@ static void *c2c_he_zalloc(size_t size)
 	init_stats(&c2c_he->cstats.load);
 
 	return &c2c_he->he;
+
+out_free:
+	free(c2c_he->nodeset);
+	free(c2c_he->cpuset);
+	free(c2c_he);
+	return NULL;
 }
 
 static void c2c_he_free(void *he)
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 2/3] perf c2c: Add helpers to get counts of loads or stores
  2022-09-06  3:29 ` [PATCH v2 2/3] perf c2c: Add helpers to get counts of loads or stores Shang XiaoJing
@ 2022-09-06  4:28   ` Leo Yan
  0 siblings, 0 replies; 8+ messages in thread
From: Leo Yan @ 2022-09-06  4:28 UTC (permalink / raw)
  To: Shang XiaoJing
  Cc: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa,
	namhyung, linux-perf-users, linux-kernel

On Tue, Sep 06, 2022 at 11:29:05AM +0800, Shang XiaoJing wrote:
> Wrap repeated code in helper functions get_load_llc_misses,
> get_load_cache_hits. For consistence, helper function get_stores is
> wraped as well.
> 
> Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
> Acked-by: Jiri Olsa <jolsa@kernel.org>

Reviewed-by: Leo Yan <leo.yan@linaro.org>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 3/3] perf c2c: Prevent potential memory leak in c2c_he_zalloc
  2022-09-06  3:29 ` [PATCH v2 3/3] perf c2c: Prevent potential memory leak in c2c_he_zalloc Shang XiaoJing
@ 2022-09-06  4:31   ` Leo Yan
  2022-09-06 12:40     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 8+ messages in thread
From: Leo Yan @ 2022-09-06  4:31 UTC (permalink / raw)
  To: Shang XiaoJing
  Cc: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa,
	namhyung, linux-perf-users, linux-kernel

On Tue, Sep 06, 2022 at 11:29:06AM +0800, Shang XiaoJing wrote:
> Free allocated resources when zalloc is failed for members in c2c_he, to
> prevent potential memory leak in c2c_he_zalloc.
> 
> Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
> Acked-by: Jiri Olsa <jolsa@kernel.org>

Reviewed-by: Leo Yan <leo.yan@linaro.org>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 3/3] perf c2c: Prevent potential memory leak in c2c_he_zalloc
  2022-09-06  4:31   ` Leo Yan
@ 2022-09-06 12:40     ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2022-09-06 12:40 UTC (permalink / raw)
  To: Leo Yan
  Cc: Shang XiaoJing, peterz, mingo, mark.rutland, alexander.shishkin,
	jolsa, namhyung, linux-perf-users, linux-kernel

Em Tue, Sep 06, 2022 at 12:31:42PM +0800, Leo Yan escreveu:
> On Tue, Sep 06, 2022 at 11:29:06AM +0800, Shang XiaoJing wrote:
> > Free allocated resources when zalloc is failed for members in c2c_he, to
> > prevent potential memory leak in c2c_he_zalloc.
> > 
> > Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
> > Acked-by: Jiri Olsa <jolsa@kernel.org>
> 
> Reviewed-by: Leo Yan <leo.yan@linaro.org>

Thanks, applied to perf/urgent.

- Arnaldo


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/3] perf: Clean up and fix potential mem leak
  2022-09-06  3:29 [PATCH v2 0/3] perf: Clean up and fix potential mem leak Shang XiaoJing
                   ` (2 preceding siblings ...)
  2022-09-06  3:29 ` [PATCH v2 3/3] perf c2c: Prevent potential memory leak in c2c_he_zalloc Shang XiaoJing
@ 2022-09-06 12:43 ` Arnaldo Carvalho de Melo
  3 siblings, 0 replies; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2022-09-06 12:43 UTC (permalink / raw)
  To: Shang XiaoJing
  Cc: peterz, mingo, mark.rutland, alexander.shishkin, jolsa, namhyung,
	linux-perf-users, linux-kernel

Em Tue, Sep 06, 2022 at 11:29:03AM +0800, Shang XiaoJing escreveu:
> Some clean up in perf.c and builtin-c2c.c.
> 
> changes from v2:
> - clear omissible free label in c2c_he_zalloc.

Thanks, applied [12]/3 to perf/core for Linux v6.1.

- Arnaldo

 
> Shang XiaoJing (3):
>   perf clean: Add same_cmd_with_prefix helper
>   perf c2c: Add helpers to get counts of loads or stores
>   perf c2c: Prevent potential memory leak in c2c_he_zalloc
> 
>  tools/perf/builtin-c2c.c | 77 +++++++++++++++++++---------------------
>  tools/perf/perf.c        | 12 +++++--
>  2 files changed, 46 insertions(+), 43 deletions(-)
> 
> -- 
> 2.17.1

-- 

- Arnaldo

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-09-06 12:43 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-06  3:29 [PATCH v2 0/3] perf: Clean up and fix potential mem leak Shang XiaoJing
2022-09-06  3:29 ` [PATCH v2 1/3] perf clean: Add same_cmd_with_prefix helper Shang XiaoJing
2022-09-06  3:29 ` [PATCH v2 2/3] perf c2c: Add helpers to get counts of loads or stores Shang XiaoJing
2022-09-06  4:28   ` Leo Yan
2022-09-06  3:29 ` [PATCH v2 3/3] perf c2c: Prevent potential memory leak in c2c_he_zalloc Shang XiaoJing
2022-09-06  4:31   ` Leo Yan
2022-09-06 12:40     ` Arnaldo Carvalho de Melo
2022-09-06 12:43 ` [PATCH v2 0/3] perf: Clean up and fix potential mem leak Arnaldo Carvalho de Melo

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.