* [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
* 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
* [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 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