Skip to content

Commit

Permalink
perf tools: Fix snprint warnings for gcc 8
Browse files Browse the repository at this point in the history
commit 77f1815 upstream.

With gcc 8 we get new set of snprintf() warnings that breaks the
compilation, one example:

  tests/mem.c: In function ‘check’:
  tests/mem.c:19:48: error: ‘%s’ directive output may be truncated writing \
        up to 99 bytes into a region of size 89 [-Werror=format-truncation=]
    snprintf(failure, sizeof failure, "unexpected %s", out);

The gcc docs says:

 To avoid the warning either use a bigger buffer or handle the
 function's return value which indicates whether or not its output
 has been truncated.

Given that all these warnings are harmless, because the code either
properly fails due to uncomplete file path or we don't care for
truncated output at all, I'm changing all those snprintf() calls to
scnprintf(), which actually 'checks' for the snprint return value so the
gcc stays silent.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Link: http://lkml.kernel.org/r/20180319082902.4518-1-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Ignat Korchagin <ignat@cloudflare.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Jiri Olsa authored and Greg Kroah-Hartman committed Oct 18, 2018
1 parent 57bff81 commit d0c9f9f
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 19 deletions.
22 changes: 11 additions & 11 deletions tools/perf/builtin-script.c
Original file line number Diff line number Diff line change
Expand Up @@ -2304,8 +2304,8 @@ static int list_available_scripts(const struct option *opt __maybe_unused,
}

for_each_lang(scripts_path, scripts_dir, lang_dirent) {
snprintf(lang_path, MAXPATHLEN, "%s/%s/bin", scripts_path,
lang_dirent->d_name);
scnprintf(lang_path, MAXPATHLEN, "%s/%s/bin", scripts_path,
lang_dirent->d_name);
lang_dir = opendir(lang_path);
if (!lang_dir)
continue;
Expand All @@ -2314,8 +2314,8 @@ static int list_available_scripts(const struct option *opt __maybe_unused,
script_root = get_script_root(script_dirent, REPORT_SUFFIX);
if (script_root) {
desc = script_desc__findnew(script_root);
snprintf(script_path, MAXPATHLEN, "%s/%s",
lang_path, script_dirent->d_name);
scnprintf(script_path, MAXPATHLEN, "%s/%s",
lang_path, script_dirent->d_name);
read_script_info(desc, script_path);
free(script_root);
}
Expand Down Expand Up @@ -2351,7 +2351,7 @@ static int check_ev_match(char *dir_name, char *scriptname,
int match, len;
FILE *fp;

sprintf(filename, "%s/bin/%s-record", dir_name, scriptname);
scnprintf(filename, MAXPATHLEN, "%s/bin/%s-record", dir_name, scriptname);

fp = fopen(filename, "r");
if (!fp)
Expand Down Expand Up @@ -2427,8 +2427,8 @@ int find_scripts(char **scripts_array, char **scripts_path_array)
}

for_each_lang(scripts_path, scripts_dir, lang_dirent) {
snprintf(lang_path, MAXPATHLEN, "%s/%s", scripts_path,
lang_dirent->d_name);
scnprintf(lang_path, MAXPATHLEN, "%s/%s", scripts_path,
lang_dirent->d_name);
#ifdef NO_LIBPERL
if (strstr(lang_path, "perl"))
continue;
Expand Down Expand Up @@ -2483,8 +2483,8 @@ static char *get_script_path(const char *script_root, const char *suffix)
return NULL;

for_each_lang(scripts_path, scripts_dir, lang_dirent) {
snprintf(lang_path, MAXPATHLEN, "%s/%s/bin", scripts_path,
lang_dirent->d_name);
scnprintf(lang_path, MAXPATHLEN, "%s/%s/bin", scripts_path,
lang_dirent->d_name);
lang_dir = opendir(lang_path);
if (!lang_dir)
continue;
Expand All @@ -2495,8 +2495,8 @@ static char *get_script_path(const char *script_root, const char *suffix)
free(__script_root);
closedir(lang_dir);
closedir(scripts_dir);
snprintf(script_path, MAXPATHLEN, "%s/%s",
lang_path, script_dirent->d_name);
scnprintf(script_path, MAXPATHLEN, "%s/%s",
lang_path, script_dirent->d_name);
return strdup(script_path);
}
free(__script_root);
Expand Down
4 changes: 2 additions & 2 deletions tools/perf/tests/attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,8 @@ static int run_dir(const char *d, const char *perf)
if (verbose > 0)
vcnt++;

snprintf(cmd, 3*PATH_MAX, PYTHON " %s/attr.py -d %s/attr/ -p %s %.*s",
d, d, perf, vcnt, v);
scnprintf(cmd, 3*PATH_MAX, PYTHON " %s/attr.py -d %s/attr/ -p %s %.*s",
d, d, perf, vcnt, v);

return system(cmd) ? TEST_FAIL : TEST_OK;
}
Expand Down
2 changes: 1 addition & 1 deletion tools/perf/tests/mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ static int check(union perf_mem_data_src data_src,

n = perf_mem__snp_scnprintf(out, sizeof out, &mi);
n += perf_mem__lvl_scnprintf(out + n, sizeof out - n, &mi);
snprintf(failure, sizeof failure, "unexpected %s", out);
scnprintf(failure, sizeof failure, "unexpected %s", out);
TEST_ASSERT_VAL(failure, !strcmp(string, out));
return 0;
}
Expand Down
2 changes: 1 addition & 1 deletion tools/perf/tests/pmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ static char *test_format_dir_get(void)
struct test_format *format = &test_formats[i];
FILE *file;

snprintf(name, PATH_MAX, "%s/%s", dir, format->name);
scnprintf(name, PATH_MAX, "%s/%s", dir, format->name);

file = fopen(name, "w");
if (!file)
Expand Down
2 changes: 1 addition & 1 deletion tools/perf/util/cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ static int open_cgroup(char *name)
if (cgroupfs_find_mountpoint(mnt, PATH_MAX + 1))
return -1;

snprintf(path, PATH_MAX, "%s/%s", mnt, name);
scnprintf(path, PATH_MAX, "%s/%s", mnt, name);

fd = open(path, O_RDONLY);
if (fd == -1)
Expand Down
4 changes: 2 additions & 2 deletions tools/perf/util/parse-events.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,8 @@ struct tracepoint_path *tracepoint_id_to_path(u64 config)

for_each_event(sys_dirent, evt_dir, evt_dirent) {

snprintf(evt_path, MAXPATHLEN, "%s/%s/id", dir_path,
evt_dirent->d_name);
scnprintf(evt_path, MAXPATHLEN, "%s/%s/id", dir_path,
evt_dirent->d_name);
fd = open(evt_path, O_RDONLY);
if (fd < 0)
continue;
Expand Down
2 changes: 1 addition & 1 deletion tools/perf/util/pmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ static int pmu_aliases_parse(char *dir, struct list_head *head)
if (pmu_alias_info_file(name))
continue;

snprintf(path, PATH_MAX, "%s/%s", dir, name);
scnprintf(path, PATH_MAX, "%s/%s", dir, name);

file = fopen(path, "r");
if (!file) {
Expand Down

0 comments on commit d0c9f9f

Please sign in to comment.