All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] perf intel-pt: Fix memory sanitizer use-of-uninitialized-value
@ 2024-03-20 16:26 Ian Rogers
  2024-03-25 15:44 ` Ian Rogers
  2024-03-26  8:32 ` [PATCH] perf intel-pt: Fix unassigned instruction op Adrian Hunter
  0 siblings, 2 replies; 7+ messages in thread
From: Ian Rogers @ 2024-03-20 16:26 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
	Ian Rogers, Adrian Hunter, Liam Howlett, Miguel Ojeda,
	linux-perf-users, linux-kernel

Running the test "Miscellaneous Intel PT testing" with a build with
-fsanitize=memory and -fsanitize-memory-track-origins I saw:

```
==1257749==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x5581c00a76b3 in intel_pt_sample_flags tools/perf/util/intel-pt.c:1527:17
    #1 0x5581c00c5cf6 in intel_pt_run_decoder tools/perf/util/intel-pt.c:2961:3
    #2 0x5581c00968f8 in intel_pt_process_timeless_queues tools/perf/util/intel-pt.c:3074:4
    #3 0x5581c007cf49 in intel_pt_process_event tools/perf/util/intel-pt.c:3482:10
    #4 0x5581bffa269a in auxtrace__process_event tools/perf/util/auxtrace.c:2830:9
    #5 0x5581bfb826c0 in perf_session__deliver_event tools/perf/util/session.c:1649:8
    #6 0x5581bfba1d7f in perf_session__process_event tools/perf/util/session.c:1891:9
    #7 0x5581bfba82e4 in process_simple tools/perf/util/session.c:2452:9
    #8 0x5581bfbabcc3 in reader__read_event tools/perf/util/session.c:2381:14
    #9 0x5581bfbad942 in reader__process_events tools/perf/util/session.c:2430:8
    #10 0x5581bfb78256 in __perf_session__process_events tools/perf/util/session.c:2477:8
    #11 0x5581bfb702c4 in perf_session__process_events tools/perf/util/session.c:2643:9
    #12 0x5581bf2da266 in __cmd_script tools/perf/builtin-script.c:2855:8
    #13 0x5581bf2bfcdd in cmd_script tools/perf/builtin-script.c:4402:8
    #14 0x5581bf67004b in run_builtin tools/perf/perf.c:350:11
    #15 0x5581bf66b8ea in handle_internal_command tools/perf/perf.c:403:8
    #16 0x5581bf66f527 in run_argv tools/perf/perf.c:447:2
    #17 0x5581bf669d2d in main tools/perf/perf.c:561:3

  Uninitialized value was stored to memory at
    #0 0x5581c005ddf8 in intel_pt_walk_insn tools/perf/util/intel-pt-decoder/intel-pt-decoder.c:1256:25
    #1 0x5581c001a932 in intel_pt_walk_fup tools/perf/util/intel-pt-decoder/intel-pt-decoder.c:1428:9
    #2 0x5581c000f76c in intel_pt_walk_trace tools/perf/util/intel-pt-decoder/intel-pt-decoder.c:3299:10
    #3 0x5581c000899b in intel_pt_decode tools/perf/util/intel-pt-decoder/intel-pt-decoder.c:3988:10
    #4 0x5581c00c5180 in intel_pt_run_decoder tools/perf/util/intel-pt.c:2941:11
    #5 0x5581c00968f8 in intel_pt_process_timeless_queues tools/perf/util/intel-pt.c:3074:4
    #6 0x5581c007cf49 in intel_pt_process_event tools/perf/util/intel-pt.c:3482:10
    #7 0x5581bffa269a in auxtrace__process_event tools/perf/util/auxtrace.c:2830:9
    #8 0x5581bfb826c0 in perf_session__deliver_event tools/perf/util/session.c:1649:8
    #9 0x5581bfba1d7f in perf_session__process_event tools/perf/util/session.c:1891:9
    #10 0x5581bfba82e4 in process_simple tools/perf/util/session.c:2452:9
    #11 0x5581bfbabcc3 in reader__read_event tools/perf/util/session.c:2381:14
    #12 0x5581bfbad942 in reader__process_events tools/perf/util/session.c:2430:8
    #13 0x5581bfb78256 in __perf_session__process_events tools/perf/util/session.c:2477:8
    #14 0x5581bfb702c4 in perf_session__process_events tools/perf/util/session.c:2643:9
    #15 0x5581bf2da266 in __cmd_script tools/perf/builtin-script.c:2855:8
    #16 0x5581bf2bfcdd in cmd_script tools/perf/builtin-script.c:4402:8
    #17 0x5581bf67004b in run_builtin tools/perf/perf.c:350:11
    #18 0x5581bf66b8ea in handle_internal_command tools/perf/perf.c:403:8
    #19 0x5581bf66f527 in run_argv tools/perf/perf.c:447:2
```

Adding a curly brace initializer for the intel_pt_insn in
intel_pt_walk_fup rectifies this, however, there may be other issues
lurking behind this so initialize all similar instances.

Fixes: f4aa081949e7 ("perf tools: Add Intel PT decoder")
Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
index b450178e3420..b4a95af2e4cc 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
@@ -1115,7 +1115,7 @@ static void intel_pt_sample_insn(struct intel_pt_decoder *decoder)
  */
 static void intel_pt_sample_fup_insn(struct intel_pt_decoder *decoder)
 {
-	struct intel_pt_insn intel_pt_insn;
+	struct intel_pt_insn intel_pt_insn = {};
 	uint64_t max_insn_cnt, insn_cnt = 0;
 	int err;
 
@@ -1418,7 +1418,7 @@ static inline bool intel_pt_fup_with_nlip(struct intel_pt_decoder *decoder,
 
 static int intel_pt_walk_fup(struct intel_pt_decoder *decoder)
 {
-	struct intel_pt_insn intel_pt_insn;
+	struct intel_pt_insn intel_pt_insn = {};
 	uint64_t ip;
 	int err;
 
@@ -1461,7 +1461,7 @@ static int intel_pt_walk_fup(struct intel_pt_decoder *decoder)
 
 static int intel_pt_walk_tip(struct intel_pt_decoder *decoder)
 {
-	struct intel_pt_insn intel_pt_insn;
+	struct intel_pt_insn intel_pt_insn = {};
 	int err;
 
 	err = intel_pt_walk_insn(decoder, &intel_pt_insn, 0);
@@ -1626,7 +1626,7 @@ static int intel_pt_emulated_ptwrite(struct intel_pt_decoder *decoder)
 
 static int intel_pt_walk_tnt(struct intel_pt_decoder *decoder)
 {
-	struct intel_pt_insn intel_pt_insn;
+	struct intel_pt_insn intel_pt_insn = {};
 	int err;
 
 	while (1) {
-- 
2.44.0.291.gc1ea87d7ee-goog


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

end of thread, other threads:[~2024-04-25 18:44 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-20 16:26 [PATCH v1] perf intel-pt: Fix memory sanitizer use-of-uninitialized-value Ian Rogers
2024-03-25 15:44 ` Ian Rogers
2024-03-25 16:06   ` Adrian Hunter
2024-03-26  8:32 ` [PATCH] perf intel-pt: Fix unassigned instruction op Adrian Hunter
2024-03-26 16:13   ` Ian Rogers
2024-03-26 16:52     ` Adrian Hunter
2024-04-25 18:43       ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.