perf bench internals inject-build-id: Fix trap divide when collecting just one DSO
authorHe Zhe <zhe.he@windriver.com>
Tue, 7 May 2024 06:50:26 +0000 (14:50 +0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 7 May 2024 15:44:02 +0000 (12:44 -0300)
'perf bench internals inject-build-id' suffers from the following error when
only one DSO is collected.

  # perf bench internals inject-build-id -v
    Collected 1 DSOs
  traps: internals-injec[2305] trap divide error
  ip:557566ba6394 sp:7ffd4de97fe0 error:0 in perf[557566b2a000+23d000]
    Build-id injection benchmark
    Iteration #1
  Floating point exception

This patch removes the unnecessary minus one from the divisor which also
corrects the randomization range.

Signed-off-by: He Zhe <zhe.he@windriver.com>
Fixes: 0bf02a0d80427f26 ("perf bench: Add build-id injection benchmark")
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20240507065026.2652929-1-zhe.he@windriver.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/bench/inject-buildid.c

index 49331743c7439b0fefa868ddab2baffde2ae2e47..a759eb2328beadffb041cde99a3bace4c9334f89 100644 (file)
@@ -362,7 +362,7 @@ static int inject_build_id(struct bench_data *data, u64 *max_rss)
                return -1;
 
        for (i = 0; i < nr_mmaps; i++) {
-               int idx = rand() % (nr_dsos - 1);
+               int idx = rand() % nr_dsos;
                struct bench_dso *dso = &dsos[idx];
                u64 timestamp = rand() % 1000000;