[PATCH v2] perf/s390: Compiler error on s390 for bench/numa.c

Thomas Richter posted 1 patch 3 years, 11 months ago
tools/perf/bench/numa.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v2] perf/s390: Compiler error on s390 for bench/numa.c
Posted by Thomas Richter 3 years, 11 months ago
The compilation on s390 results in this error:

 # make DEBUG=y bench/numa.o
 ...
 bench/numa.c: In function ‘__bench_numa’:
 bench/numa.c:1749:81: error: ‘%d’ directive output may be truncated
             writing between 1 and 11 bytes into a region of size between
             10 and 20 [-Werror=format-truncation=]
 1749 |        snprintf(tname, sizeof(tname), "process%d:thread%d", p, t);
                                                               ^~
 ...
 bench/numa.c:1749:64: note: directive argument in the range
                [-2147483647, 2147483646]
 ...
 #

The maximum length of the %d replacement is 11 characters because
of the negative sign.  Therefore extend the array by two more
characters.

Output after:
 # make  DEBUG=y bench/numa.o > /dev/null 2>&1; ll bench/numa.o
 -rw-r--r-- 1 root root 418320 May 19 09:11 bench/numa.o
 #

Fixes: 3aff8ba0a4c9c ("perf bench numa: Avoid possible truncation when using snprintf()")
Suggested-by: Namhyung Kim <namhyung@gmail.com>
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
---
 tools/perf/bench/numa.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c
index d5289fa58a4f..20eed1e53f80 100644
--- a/tools/perf/bench/numa.c
+++ b/tools/perf/bench/numa.c
@@ -1740,7 +1740,7 @@ static int __bench_numa(const char *name)
 		"GB/sec,", "total-speed",	"GB/sec total speed");
 
 	if (g->p.show_details >= 2) {
-		char tname[14 + 2 * 10 + 1];
+		char tname[14 + 2 * 11 + 1];
 		struct thread_data *td;
 		for (p = 0; p < g->p.nr_proc; p++) {
 			for (t = 0; t < g->p.nr_threads; t++) {
-- 
2.36.1

Re: [PATCH v2] perf/s390: Compiler error on s390 for bench/numa.c
Posted by Arnaldo Carvalho de Melo 3 years, 11 months ago
Em Fri, May 20, 2022 at 10:11:58AM +0200, Thomas Richter escreveu:
> The compilation on s390 results in this error:
> 
>  # make DEBUG=y bench/numa.o
>  ...
>  bench/numa.c: In function ‘__bench_numa’:
>  bench/numa.c:1749:81: error: ‘%d’ directive output may be truncated
>              writing between 1 and 11 bytes into a region of size between
>              10 and 20 [-Werror=format-truncation=]
>  1749 |        snprintf(tname, sizeof(tname), "process%d:thread%d", p, t);
>                                                                ^~
>  ...
>  bench/numa.c:1749:64: note: directive argument in the range
>                 [-2147483647, 2147483646]
>  ...
>  #
> 
> The maximum length of the %d replacement is 11 characters because
> of the negative sign.  Therefore extend the array by two more
> characters.
> 
> Output after:
>  # make  DEBUG=y bench/numa.o > /dev/null 2>&1; ll bench/numa.o
>  -rw-r--r-- 1 root root 418320 May 19 09:11 bench/numa.o
>  #
> 
> Fixes: 3aff8ba0a4c9c ("perf bench numa: Avoid possible truncation when using snprintf()")
> Suggested-by: Namhyung Kim <namhyung@gmail.com>



Thanks, applied.

- Arnaldo


> Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
> ---
>  tools/perf/bench/numa.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c
> index d5289fa58a4f..20eed1e53f80 100644
> --- a/tools/perf/bench/numa.c
> +++ b/tools/perf/bench/numa.c
> @@ -1740,7 +1740,7 @@ static int __bench_numa(const char *name)
>  		"GB/sec,", "total-speed",	"GB/sec total speed");
>  
>  	if (g->p.show_details >= 2) {
> -		char tname[14 + 2 * 10 + 1];
> +		char tname[14 + 2 * 11 + 1];
>  		struct thread_data *td;
>  		for (p = 0; p < g->p.nr_proc; p++) {
>  			for (t = 0; t < g->p.nr_threads; t++) {
> -- 
> 2.36.1

-- 

- Arnaldo