2018-12-29 19:59:44

by Mattias Jacobsson

[permalink] [raw]
Subject: [PATCH] perf tools: util: remove redundant va_end() in strbuf_addv()

Each call to va_copy() should have one, and only one, corresponding call
to va_end(). In strbuf_addv() some code paths result in va_end() getting
called multiple times. Remove the superfluous va_end().

Fixes: ce49d8436cff ("perf strbuf: Match va_{add,copy} with va_end")
Signed-off-by: Mattias Jacobsson <[email protected]>
---
tools/perf/util/strbuf.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/tools/perf/util/strbuf.c b/tools/perf/util/strbuf.c
index 9005fbe0780e..23092fd6451d 100644
--- a/tools/perf/util/strbuf.c
+++ b/tools/perf/util/strbuf.c
@@ -109,7 +109,6 @@ static int strbuf_addv(struct strbuf *sb, const char *fmt, va_list ap)
return ret;
}
len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap_saved);
- va_end(ap_saved);
if (len > strbuf_avail(sb)) {
pr_debug("this should not happen, your vsnprintf is broken");
va_end(ap_saved);
--
2.20.1



2019-01-04 17:32:58

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf tools: util: remove redundant va_end() in strbuf_addv()

Em Sat, Dec 29, 2018 at 03:17:50PM +0100, Mattias Jacobsson escreveu:
> Each call to va_copy() should have one, and only one, corresponding call
> to va_end(). In strbuf_addv() some code paths result in va_end() getting
> called multiple times. Remove the superfluous va_end().
>
> Fixes: ce49d8436cff ("perf strbuf: Match va_{add,copy} with va_end")
> Signed-off-by: Mattias Jacobsson <[email protected]>

Its nice that you included the Fixes tag!

Thanks, applied.

- Arnaldo

> ---
> tools/perf/util/strbuf.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/tools/perf/util/strbuf.c b/tools/perf/util/strbuf.c
> index 9005fbe0780e..23092fd6451d 100644
> --- a/tools/perf/util/strbuf.c
> +++ b/tools/perf/util/strbuf.c
> @@ -109,7 +109,6 @@ static int strbuf_addv(struct strbuf *sb, const char *fmt, va_list ap)
> return ret;
> }
> len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap_saved);
> - va_end(ap_saved);
> if (len > strbuf_avail(sb)) {
> pr_debug("this should not happen, your vsnprintf is broken");
> va_end(ap_saved);
> --
> 2.20.1

--

- Arnaldo

Subject: [tip:perf/urgent] perf strbuf: Remove redundant va_end() in strbuf_addv()

Commit-ID: 099be748865eece21362aee416c350c0b1ae34df
Gitweb: https://git.kernel.org/tip/099be748865eece21362aee416c350c0b1ae34df
Author: Mattias Jacobsson <[email protected]>
AuthorDate: Sat, 29 Dec 2018 15:17:50 +0100
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Fri, 4 Jan 2019 12:54:49 -0300

perf strbuf: Remove redundant va_end() in strbuf_addv()

Each call to va_copy() should have one, and only one, corresponding call
to va_end(). In strbuf_addv() some code paths result in va_end() getting
called multiple times. Remove the superfluous va_end().

Signed-off-by: Mattias Jacobsson <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Sanskriti Sharma <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Fixes: ce49d8436cff ("perf strbuf: Match va_{add,copy} with va_end")
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/strbuf.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/tools/perf/util/strbuf.c b/tools/perf/util/strbuf.c
index 9005fbe0780e..23092fd6451d 100644
--- a/tools/perf/util/strbuf.c
+++ b/tools/perf/util/strbuf.c
@@ -109,7 +109,6 @@ static int strbuf_addv(struct strbuf *sb, const char *fmt, va_list ap)
return ret;
}
len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap_saved);
- va_end(ap_saved);
if (len > strbuf_avail(sb)) {
pr_debug("this should not happen, your vsnprintf is broken");
va_end(ap_saved);