linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] Perf uninitialized value fixes
@ 2019-07-24 23:44 Numfor Mbiziwo-Tiapo
  2019-07-24 23:44 ` [PATCH 1/3] Fix util.c use of unitialized value warning Numfor Mbiziwo-Tiapo
                   ` (3 more replies)
  0 siblings, 4 replies; 17+ messages in thread
From: Numfor Mbiziwo-Tiapo @ 2019-07-24 23:44 UTC (permalink / raw)
  To: peterz, mingo, acme, alexander.shishkin, jolsa, namhyung,
	songliubraving, mbd
  Cc: linux-kernel, irogers, eranian, Numfor Mbiziwo-Tiapo

These patches are all warnings that the MSAN (Memory Sanitizer) build
of perf has caught.

To build perf with MSAN enabled run:
make -C tools/perf CLANG=1 CC=clang EXTRA_CFLAGS="-fsanitize=memory\
 -fsanitize-memory-track-origins"

(The -fsanitizer-memory-track-origins makes the bugs clearer but
isn't strictly necessary.)

(Additionally, llvm might have to be installed and clang might have to
be specified as the compiler - export CC=/usr/bin/clang).

The patches "Fix util.c use of uninitialized value warning" and "Fix 
annotate.c use of uninitialized value error" build on top of each other
(the changes in Fix util.c use of uninitialized value warning must be
made first).

When running the commands provided in the repro instructions, MSAN will
generate false positive uninitialized memory errors. This is happening
because libc is not MSAN-instrumented. Finding a way to build libc with
MSAN will get rid of these false positives and allow the real warnings
mentioned in the patches to be shown. 

Numfor Mbiziwo-Tiapo (3):
  Fix util.c use of uninitialized value warning
  Fix annotate.c use of uninitialized value error
  Fix sched-messaging.c use of uninitialized value errors

 tools/perf/bench/sched-messaging.c |  3 ++-
 tools/perf/util/annotate.c         | 15 +++++++++++----
 tools/perf/util/header.c           |  2 +-
 3 files changed, 14 insertions(+), 6 deletions(-)

-- 
2.22.0.657.g960e92d24f-goog


^ permalink raw reply	[flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] Fix backward-ring-buffer.c format-truncation error
@ 2019-07-26 19:40 Arnaldo Carvalho de Melo
  2019-07-29 20:57 ` [PATCH v2] Fix annotate.c use of uninitialized value error Numfor Mbiziwo-Tiapo
  0 siblings, 1 reply; 17+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-26 19:40 UTC (permalink / raw)
  To: Numfor Mbiziwo-Tiapo
  Cc: peterz, mingo, alexander.shishkin, jolsa, namhyung,
	songliubraving, mbd, linux-kernel, irogers, eranian

Em Wed, Jul 24, 2019 at 11:45:10AM -0700, Numfor Mbiziwo-Tiapo escreveu:
> Perf does not build with the ubsan (undefined behavior sanitizer)
> and there is an error that says:
> 
> tests/backward-ring-buffer.c:23:45: error: ‘%d’ directive output
> may be truncated writing between 1 and 10 bytes into a region of
> size 8 [-Werror=format-truncation=]
>    snprintf(proc_name, sizeof(proc_name), "p:%d\n", i);
> 
> This can be reproduced by running (from the tip directory):
> make -C tools/perf USE_CLANG=1 EXTRA_CFLAGS="-fsanitize=undefined"
> 
> Th error occurs because they are writing to the 10 byte buffer - the
> index 'i' of the for loop and the 2 byte hardcoded string. If somehow 'i'
> was greater than 8 bytes (10 - 2), then the snprintf function would
> truncate the string. Increasing the size of the buffer fixes the error.
> 
> Signed-off-by: Numfor Mbiziwo-Tiapo <nums@google.com>
> ---
>  tools/perf/tests/backward-ring-buffer.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/tests/backward-ring-buffer.c b/tools/perf/tests/backward-ring-buffer.c
> index 6d598cc071ae..1a9c3becf5ff 100644
> --- a/tools/perf/tests/backward-ring-buffer.c
> +++ b/tools/perf/tests/backward-ring-buffer.c
> @@ -18,7 +18,7 @@ static void testcase(void)
>  	int i;
>  
>  	for (i = 0; i < NR_ITERS; i++) {
> -		char proc_name[10];
> +		char proc_name[15];
>  
>  		snprintf(proc_name, sizeof(proc_name), "p:%d\n", i);
>  		prctl(PR_SET_NAME, proc_name);

This was fixed already by:

commit 11c1ea6f1a9bc97bf857fd12f72eacb6c69794e2
Author: Changbin Du <changbin.du@gmail.com>
Date:   Sat Mar 16 16:05:43 2019 +0800

    perf tools: Fix errors under optimization level '-Og'

    Optimization level '-Og' offers a reasonable level of optimization while
    maintaining fast compilation and a good debugging experience. This patch
    tries to make it work.

      $ make DEBUG=1 EXTRA_CFLAGS='-Og'
      bench/epoll-ctl.c: In function ‘do_threads’:
      bench/epoll-ctl.c:274:9: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
        return ret;
               ^~~
      ...

    Signed-off-by: Changbin Du <changbin.du@gmail.com>
    Reviewed-by: Jiri Olsa <jolsa@kernel.org>

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

end of thread, other threads:[~2020-07-09 15:38 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-24 23:44 [PATCH 0/3] Perf uninitialized value fixes Numfor Mbiziwo-Tiapo
2019-07-24 23:44 ` [PATCH 1/3] Fix util.c use of unitialized value warning Numfor Mbiziwo-Tiapo
2019-07-26 19:19   ` Arnaldo Carvalho de Melo
2019-07-29 21:35   ` [tip:perf/urgent] perf header: Fix " tip-bot for Numfor Mbiziwo-Tiapo
2019-07-24 23:44 ` [PATCH 2/3] Fix annotate.c use of uninitialized value error Numfor Mbiziwo-Tiapo
2019-07-26 19:28   ` Arnaldo Carvalho de Melo
2019-07-31  0:40     ` [PATCH v2] " Numfor Mbiziwo-Tiapo
2019-07-24 23:45 ` [PATCH 3/3] Fix sched-messaging.c use of uninitialized value errors Numfor Mbiziwo-Tiapo
2019-07-26 19:32   ` Arnaldo Carvalho de Melo
2019-07-26 23:52     ` Ian Rogers
2019-08-07 20:38 ` [PATCH 0/3] Perf uninitialized value fixes Arnaldo Carvalho de Melo
2019-08-22 21:29   ` Ian Rogers
2019-07-26 19:40 [PATCH 1/3] Fix backward-ring-buffer.c format-truncation error Arnaldo Carvalho de Melo
2019-07-29 20:57 ` [PATCH v2] Fix annotate.c use of uninitialized value error Numfor Mbiziwo-Tiapo
2019-08-07 11:32   ` Jiri Olsa
2019-10-25 22:11     ` Ian Rogers
2020-07-09  0:54       ` Ian Rogers
2020-07-09 15:38         ` Arnaldo Carvalho de Melo

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).