linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] perf: probe-file: Check return value of strlist__add for -ENOMEM
@ 2020-02-26 14:30 zhe.he
  2020-02-26 15:31 ` Jiri Olsa
  2020-02-29  9:16 ` [tip: perf/urgent] perf probe: Check return value of strlist__add() " tip-bot2 for He Zhe
  0 siblings, 2 replies; 5+ messages in thread
From: zhe.he @ 2020-02-26 14:30 UTC (permalink / raw)
  To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa,
	namhyung, mhiramat, kstewart, tglx, linux-kernel, zhe.he

From: He Zhe <zhe.he@windriver.com>

strlist__add may fail with -ENOMEM. Check it and give debugging hint in
advance.

Signed-off-by: He Zhe <zhe.he@windriver.com>
---
v2: Only catch -ENOMEM

 tools/perf/builtin-probe.c   |  6 ++++--
 tools/perf/util/probe-file.c | 28 ++++++++++++++++++++++++----
 2 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
index 26bc5923e6b5..70548df2abb9 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -449,7 +449,8 @@ static int perf_del_probe_events(struct strfilter *filter)
 		ret = probe_file__del_strlist(kfd, klist);
 		if (ret < 0)
 			goto error;
-	}
+	} else if (ret == -ENOMEM)
+		goto error;
 
 	ret2 = probe_file__get_events(ufd, filter, ulist);
 	if (ret2 == 0) {
@@ -459,7 +460,8 @@ static int perf_del_probe_events(struct strfilter *filter)
 		ret2 = probe_file__del_strlist(ufd, ulist);
 		if (ret2 < 0)
 			goto error;
-	}
+	} else if (ret2 == -ENOMEM)
+		goto error;
 
 	if (ret == -ENOENT && ret2 == -ENOENT)
 		pr_warning("\"%s\" does not hit any event.\n", str);
diff --git a/tools/perf/util/probe-file.c b/tools/perf/util/probe-file.c
index cf44c05f89c1..b6a7e8b7aaab 100644
--- a/tools/perf/util/probe-file.c
+++ b/tools/perf/util/probe-file.c
@@ -307,10 +307,15 @@ int probe_file__get_events(int fd, struct strfilter *filter,
 		p = strchr(ent->s, ':');
 		if ((p && strfilter__compare(filter, p + 1)) ||
 		    strfilter__compare(filter, ent->s)) {
-			strlist__add(plist, ent->s);
+			ret = strlist__add(plist, ent->s);
+			if (ret == -ENOMEM) {
+				pr_err("strlist__add failed with -ENOMEM\n");
+				goto out;
+			}
 			ret = 0;
 		}
 	}
+out:
 	strlist__delete(namelist);
 
 	return ret;
@@ -517,7 +522,11 @@ static int probe_cache__load(struct probe_cache *pcache)
 				ret = -EINVAL;
 				goto out;
 			}
-			strlist__add(entry->tevlist, buf);
+			ret = strlist__add(entry->tevlist, buf);
+			if (ret == -ENOMEM) {
+				pr_err("strlist__add failed with -ENOMEM\n");
+				goto out;
+			}
 		}
 	}
 out:
@@ -678,7 +687,12 @@ int probe_cache__add_entry(struct probe_cache *pcache,
 		command = synthesize_probe_trace_command(&tevs[i]);
 		if (!command)
 			goto out_err;
-		strlist__add(entry->tevlist, command);
+		ret = strlist__add(entry->tevlist, command);
+		if (ret == -ENOMEM) {
+			pr_err("strlist__add failed with -ENOMEM\n");
+			goto out_err;
+		}
+
 		free(command);
 	}
 	list_add_tail(&entry->node, &pcache->entries);
@@ -859,9 +873,15 @@ int probe_cache__scan_sdt(struct probe_cache *pcache, const char *pathname)
 			break;
 		}
 
-		strlist__add(entry->tevlist, buf);
+		ret = strlist__add(entry->tevlist, buf);
+
 		free(buf);
 		entry = NULL;
+
+		if (ret == -ENOMEM) {
+			pr_err("strlist__add failed with -ENOMEM\n");
+			break;
+		}
 	}
 	if (entry) {
 		list_del_init(&entry->node);
-- 
2.24.1


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

* Re: [PATCH v2] perf: probe-file: Check return value of strlist__add for -ENOMEM
  2020-02-26 14:30 [PATCH v2] perf: probe-file: Check return value of strlist__add for -ENOMEM zhe.he
@ 2020-02-26 15:31 ` Jiri Olsa
  2020-02-27 14:03   ` Arnaldo Carvalho de Melo
  2020-02-29  9:16 ` [tip: perf/urgent] perf probe: Check return value of strlist__add() " tip-bot2 for He Zhe
  1 sibling, 1 reply; 5+ messages in thread
From: Jiri Olsa @ 2020-02-26 15:31 UTC (permalink / raw)
  To: zhe.he
  Cc: peterz, mingo, acme, mark.rutland, alexander.shishkin, namhyung,
	mhiramat, kstewart, tglx, linux-kernel

On Wed, Feb 26, 2020 at 10:30:04PM +0800, zhe.he@windriver.com wrote:
> From: He Zhe <zhe.he@windriver.com>
> 
> strlist__add may fail with -ENOMEM. Check it and give debugging hint in
> advance.
> 
> Signed-off-by: He Zhe <zhe.he@windriver.com>

Acked-by: Jiri Olsa <jolsa@redhat.com>

thanks,
jirka


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

* Re: [PATCH v2] perf: probe-file: Check return value of strlist__add for -ENOMEM
  2020-02-26 15:31 ` Jiri Olsa
@ 2020-02-27 14:03   ` Arnaldo Carvalho de Melo
  2020-02-27 23:50     ` Masami Hiramatsu
  0 siblings, 1 reply; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2020-02-27 14:03 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: zhe.he, peterz, mingo, mark.rutland, alexander.shishkin,
	namhyung, mhiramat, kstewart, tglx, linux-kernel

Em Wed, Feb 26, 2020 at 04:31:53PM +0100, Jiri Olsa escreveu:
> On Wed, Feb 26, 2020 at 10:30:04PM +0800, zhe.he@windriver.com wrote:
> > From: He Zhe <zhe.he@windriver.com>
> > 
> > strlist__add may fail with -ENOMEM. Check it and give debugging hint in
> > advance.
> > 
> > Signed-off-by: He Zhe <zhe.he@windriver.com>
> 
> Acked-by: Jiri Olsa <jolsa@redhat.com>

Thanks, applied,

- Arnaldo

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

* Re: [PATCH v2] perf: probe-file: Check return value of strlist__add for -ENOMEM
  2020-02-27 14:03   ` Arnaldo Carvalho de Melo
@ 2020-02-27 23:50     ` Masami Hiramatsu
  0 siblings, 0 replies; 5+ messages in thread
From: Masami Hiramatsu @ 2020-02-27 23:50 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Jiri Olsa, zhe.he, peterz, mingo, mark.rutland,
	alexander.shishkin, namhyung, mhiramat, kstewart, tglx,
	linux-kernel

On Thu, 27 Feb 2020 11:03:41 -0300
Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Em Wed, Feb 26, 2020 at 04:31:53PM +0100, Jiri Olsa escreveu:
> > On Wed, Feb 26, 2020 at 10:30:04PM +0800, zhe.he@windriver.com wrote:
> > > From: He Zhe <zhe.he@windriver.com>
> > > 
> > > strlist__add may fail with -ENOMEM. Check it and give debugging hint in
> > > advance.
> > > 
> > > Signed-off-by: He Zhe <zhe.he@windriver.com>
> > 
> > Acked-by: Jiri Olsa <jolsa@redhat.com>
> 
> Thanks, applied,

Thanks Arnaldo and He, Sorry I missed to reply my Ack.

Acked-by: Masami Hiramatsu <mhiramat@kernel.org>

Thanks,

-- 
Masami Hiramatsu <mhiramat@kernel.org>

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

* [tip: perf/urgent] perf probe: Check return value of strlist__add() for -ENOMEM
  2020-02-26 14:30 [PATCH v2] perf: probe-file: Check return value of strlist__add for -ENOMEM zhe.he
  2020-02-26 15:31 ` Jiri Olsa
@ 2020-02-29  9:16 ` tip-bot2 for He Zhe
  1 sibling, 0 replies; 5+ messages in thread
From: tip-bot2 for He Zhe @ 2020-02-29  9:16 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: He Zhe, Jiri Olsa, Alexander Shishkin, Kate Stewart,
	Mark Rutland, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra,
	Thomas Gleixner, Arnaldo Carvalho de Melo, x86, LKML

The following commit has been merged into the perf/urgent branch of tip:

Commit-ID:     bd862b1d839221322b2e38eb8a06861604804b5e
Gitweb:        https://git.kernel.org/tip/bd862b1d839221322b2e38eb8a06861604804b5e
Author:        He Zhe <zhe.he@windriver.com>
AuthorDate:    Wed, 26 Feb 2020 22:30:04 +08:00
Committer:     Arnaldo Carvalho de Melo <acme@redhat.com>
CommitterDate: Thu, 27 Feb 2020 11:03:13 -03:00

perf probe: Check return value of strlist__add() for -ENOMEM

strlist__add() may fail with -ENOMEM. Check it and give debugging hint
in advance.

Signed-off-by: He Zhe <zhe.he@windriver.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lore.kernel.org/lkml/1582727404-180095-1-git-send-email-zhe.he@windriver.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-probe.c   |  6 ++++--
 tools/perf/util/probe-file.c | 28 ++++++++++++++++++++++++----
 2 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
index 26bc592..70548df 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -449,7 +449,8 @@ static int perf_del_probe_events(struct strfilter *filter)
 		ret = probe_file__del_strlist(kfd, klist);
 		if (ret < 0)
 			goto error;
-	}
+	} else if (ret == -ENOMEM)
+		goto error;
 
 	ret2 = probe_file__get_events(ufd, filter, ulist);
 	if (ret2 == 0) {
@@ -459,7 +460,8 @@ static int perf_del_probe_events(struct strfilter *filter)
 		ret2 = probe_file__del_strlist(ufd, ulist);
 		if (ret2 < 0)
 			goto error;
-	}
+	} else if (ret2 == -ENOMEM)
+		goto error;
 
 	if (ret == -ENOENT && ret2 == -ENOENT)
 		pr_warning("\"%s\" does not hit any event.\n", str);
diff --git a/tools/perf/util/probe-file.c b/tools/perf/util/probe-file.c
index 5003ba4..0f5fda1 100644
--- a/tools/perf/util/probe-file.c
+++ b/tools/perf/util/probe-file.c
@@ -301,10 +301,15 @@ int probe_file__get_events(int fd, struct strfilter *filter,
 		p = strchr(ent->s, ':');
 		if ((p && strfilter__compare(filter, p + 1)) ||
 		    strfilter__compare(filter, ent->s)) {
-			strlist__add(plist, ent->s);
+			ret = strlist__add(plist, ent->s);
+			if (ret == -ENOMEM) {
+				pr_err("strlist__add failed with -ENOMEM\n");
+				goto out;
+			}
 			ret = 0;
 		}
 	}
+out:
 	strlist__delete(namelist);
 
 	return ret;
@@ -511,7 +516,11 @@ static int probe_cache__load(struct probe_cache *pcache)
 				ret = -EINVAL;
 				goto out;
 			}
-			strlist__add(entry->tevlist, buf);
+			ret = strlist__add(entry->tevlist, buf);
+			if (ret == -ENOMEM) {
+				pr_err("strlist__add failed with -ENOMEM\n");
+				goto out;
+			}
 		}
 	}
 out:
@@ -672,7 +681,12 @@ int probe_cache__add_entry(struct probe_cache *pcache,
 		command = synthesize_probe_trace_command(&tevs[i]);
 		if (!command)
 			goto out_err;
-		strlist__add(entry->tevlist, command);
+		ret = strlist__add(entry->tevlist, command);
+		if (ret == -ENOMEM) {
+			pr_err("strlist__add failed with -ENOMEM\n");
+			goto out_err;
+		}
+
 		free(command);
 	}
 	list_add_tail(&entry->node, &pcache->entries);
@@ -853,9 +867,15 @@ int probe_cache__scan_sdt(struct probe_cache *pcache, const char *pathname)
 			break;
 		}
 
-		strlist__add(entry->tevlist, buf);
+		ret = strlist__add(entry->tevlist, buf);
+
 		free(buf);
 		entry = NULL;
+
+		if (ret == -ENOMEM) {
+			pr_err("strlist__add failed with -ENOMEM\n");
+			break;
+		}
 	}
 	if (entry) {
 		list_del_init(&entry->node);

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

end of thread, other threads:[~2020-02-29  9:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-26 14:30 [PATCH v2] perf: probe-file: Check return value of strlist__add for -ENOMEM zhe.he
2020-02-26 15:31 ` Jiri Olsa
2020-02-27 14:03   ` Arnaldo Carvalho de Melo
2020-02-27 23:50     ` Masami Hiramatsu
2020-02-29  9:16 ` [tip: perf/urgent] perf probe: Check return value of strlist__add() " tip-bot2 for He Zhe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).