perf tools: Give synthetic mmap events an inode generation

When mmap2 events are synthesized the ino_generation field isn't being
set leading to uninitialized memory being compared.

Caught with clang's -fsanitize=memory:

==124733==WARNING: MemorySanitizer: use-of-uninitialized-value
     0x55a96a6a65cc in __dso_id__cmp tools/perf/util/dsos.c:23:6
     0x55a96a6a81d5 in dso_id__cmp tools/perf/util/dsos.c:38:9
     0x55a96a6a717f in __dso__cmp_long_name tools/perf/util/dsos.c:74:15
     0x55a96a6a6c4c in __dsos__findnew_link_by_longname_id tools/perf/util/dsos.c:106:12
     0x55a96a6a851e in __dsos__findnew_by_longname_id tools/perf/util/dsos.c:178:9
     0x55a96a6a7798 in __dsos__find_id tools/perf/util/dsos.c:191:9
     0x55a96a6a7b57 in __dsos__findnew_id tools/perf/util/dsos.c:251:20
     0x55a96a6a7a57 in dsos__findnew_id tools/perf/util/dsos.c:259:17
     0x55a96a7776ae in machine__findnew_dso_id tools/perf/util/machine.c:2709:9
     0x55a96a77dfcf in map__new tools/perf/util/map.c:193:10
     0x55a96a77240a in machine__process_mmap2_event tools/perf/util/machine.c:1670:8
     0x55a96a7741a3 in machine__process_event tools/perf/util/machine.c:1882:9
     0x55a96a6aee39 in perf_event__process tools/perf/util/event.c:454:9
     0x55a96a87d633 in perf_tool__process_synth_event tools/perf/util/synthetic-events.c:63:9
     0x55a96a87f131 in perf_event__synthesize_mmap_events tools/perf/util/synthetic-events.c:403:7
     0x55a96a8815d6 in __event__synthesize_thread tools/perf/util/synthetic-events.c:548:9
     0x55a96a882bff in __perf_event__synthesize_threads tools/perf/util/synthetic-events.c:681:3
     0x55a96a881ec2 in perf_event__synthesize_threads tools/perf/util/synthetic-events.c:750:9
     0x55a96a562b26 in synth_all tools/perf/tests/mmap-thread-lookup.c:136:9
     0x55a96a5623b1 in mmap_events tools/perf/tests/mmap-thread-lookup.c:174:8
     0x55a96a561fa0 in test__mmap_thread_lookup tools/perf/tests/mmap-thread-lookup.c:230:2
     0x55a96a52c182 in run_test tools/perf/tests/builtin-test.c:378:9
     0x55a96a52afc1 in test_and_print tools/perf/tests/builtin-test.c:408:9
     0x55a96a52966e in __cmd_test tools/perf/tests/builtin-test.c:603:4
     0x55a96a52855d in cmd_test tools/perf/tests/builtin-test.c:747:9
     0x55a96a2844d4 in run_builtin tools/perf/perf.c:312:11
     0x55a96a282bd0 in handle_internal_command tools/perf/perf.c:364:8
     0x55a96a284097 in run_argv tools/perf/perf.c:408:2
     0x55a96a282223 in main tools/perf/perf.c:538:3

  Uninitialized value was stored to memory at
     0x55a96a6a18f7 in dso__new_id tools/perf/util/dso.c:1230:14
     0x55a96a6a78ee in __dsos__addnew_id tools/perf/util/dsos.c:233:20
     0x55a96a6a7bcc in __dsos__findnew_id tools/perf/util/dsos.c:252:21
     0x55a96a6a7a57 in dsos__findnew_id tools/perf/util/dsos.c:259:17
     0x55a96a7776ae in machine__findnew_dso_id tools/perf/util/machine.c:2709:9
     0x55a96a77dfcf in map__new tools/perf/util/map.c:193:10
     0x55a96a77240a in machine__process_mmap2_event tools/perf/util/machine.c:1670:8
     0x55a96a7741a3 in machine__process_event tools/perf/util/machine.c:1882:9
     0x55a96a6aee39 in perf_event__process tools/perf/util/event.c:454:9
     0x55a96a87d633 in perf_tool__process_synth_event tools/perf/util/synthetic-events.c:63:9
     0x55a96a87f131 in perf_event__synthesize_mmap_events tools/perf/util/synthetic-events.c:403:7
     0x55a96a8815d6 in __event__synthesize_thread tools/perf/util/synthetic-events.c:548:9
     0x55a96a882bff in __perf_event__synthesize_threads tools/perf/util/synthetic-events.c:681:3
     0x55a96a881ec2 in perf_event__synthesize_threads tools/perf/util/synthetic-events.c:750:9
     0x55a96a562b26 in synth_all tools/perf/tests/mmap-thread-lookup.c:136:9
     0x55a96a5623b1 in mmap_events tools/perf/tests/mmap-thread-lookup.c:174:8
     0x55a96a561fa0 in test__mmap_thread_lookup tools/perf/tests/mmap-thread-lookup.c:230:2
     0x55a96a52c182 in run_test tools/perf/tests/builtin-test.c:378:9
     0x55a96a52afc1 in test_and_print tools/perf/tests/builtin-test.c:408:9

  Uninitialized value was stored to memory at
     0x55a96a7725af in machine__process_mmap2_event tools/perf/util/machine.c:1646:25
     0x55a96a7741a3 in machine__process_event tools/perf/util/machine.c:1882:9
     0x55a96a6aee39 in perf_event__process tools/perf/util/event.c:454:9
     0x55a96a87d633 in perf_tool__process_synth_event tools/perf/util/synthetic-events.c:63:9
     0x55a96a87f131 in perf_event__synthesize_mmap_events tools/perf/util/synthetic-events.c:403:7
     0x55a96a8815d6 in __event__synthesize_thread tools/perf/util/synthetic-events.c:548:9
     0x55a96a882bff in __perf_event__synthesize_threads tools/perf/util/synthetic-events.c:681:3
     0x55a96a881ec2 in perf_event__synthesize_threads tools/perf/util/synthetic-events.c:750:9
     0x55a96a562b26 in synth_all tools/perf/tests/mmap-thread-lookup.c:136:9
     0x55a96a5623b1 in mmap_events tools/perf/tests/mmap-thread-lookup.c:174:8
     0x55a96a561fa0 in test__mmap_thread_lookup tools/perf/tests/mmap-thread-lookup.c:230:2
     0x55a96a52c182 in run_test tools/perf/tests/builtin-test.c:378:9
     0x55a96a52afc1 in test_and_print tools/perf/tests/builtin-test.c:408:9
     0x55a96a52966e in __cmd_test tools/perf/tests/builtin-test.c:603:4
     0x55a96a52855d in cmd_test tools/perf/tests/builtin-test.c:747:9
     0x55a96a2844d4 in run_builtin tools/perf/perf.c:312:11
     0x55a96a282bd0 in handle_internal_command tools/perf/perf.c:364:8
     0x55a96a284097 in run_argv tools/perf/perf.c:408:2
     0x55a96a282223 in main tools/perf/perf.c:538:3

  Uninitialized value was created by a heap allocation
     0x55a96a22f60d in malloc llvm/llvm-project/compiler-rt/lib/msan/msan_interceptors.cpp:925:3
     0x55a96a882948 in __perf_event__synthesize_threads tools/perf/util/synthetic-events.c:655:15
     0x55a96a881ec2 in perf_event__synthesize_threads tools/perf/util/synthetic-events.c:750:9
     0x55a96a562b26 in synth_all tools/perf/tests/mmap-thread-lookup.c:136:9
     0x55a96a5623b1 in mmap_events tools/perf/tests/mmap-thread-lookup.c:174:8
     0x55a96a561fa0 in test__mmap_thread_lookup tools/perf/tests/mmap-thread-lookup.c:230:2
     0x55a96a52c182 in run_test tools/perf/tests/builtin-test.c:378:9
     0x55a96a52afc1 in test_and_print tools/perf/tests/builtin-test.c:408:9
     0x55a96a52966e in __cmd_test tools/perf/tests/builtin-test.c:603:4
     0x55a96a52855d in cmd_test tools/perf/tests/builtin-test.c:747:9
     0x55a96a2844d4 in run_builtin tools/perf/perf.c:312:11
     0x55a96a282bd0 in handle_internal_command tools/perf/perf.c:364:8
     0x55a96a284097 in run_argv tools/perf/perf.c:408:2
     0x55a96a282223 in main tools/perf/perf.c:538:3

SUMMARY: MemorySanitizer: use-of-uninitialized-value tools/perf/util/dsos.c:23:6 in __dso_id__cmp

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: clang-built-linux@googlegroups.com
Link: http://lore.kernel.org/lkml/20200313053129.131264-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Ian Rogers 2020-03-12 22:31:29 -07:00 committed by Arnaldo Carvalho de Melo
parent b2bf666070
commit 3b7a15b064

View File

@ -345,6 +345,7 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
continue; continue;
event->mmap2.ino = (u64)ino; event->mmap2.ino = (u64)ino;
event->mmap2.ino_generation = 0;
/* /*
* Just like the kernel, see __perf_event_mmap in kernel/perf_event.c * Just like the kernel, see __perf_event_mmap in kernel/perf_event.c