Skip to content

Commit

Permalink
perf map: Add map__refcnt() accessor to use in the maps test
Browse files Browse the repository at this point in the history
To remove one more direct access to 'struct map' so that we can intecept
accesses to its instantiations and refcount check it to catch use after
free, etc.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
Cc: Dmitriy Vyukov <dvyukov@google.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Riccardo Mancini <rickyman7@gmail.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Stephen Brennan <stephen.s.brennan@oracle.com>
Link: https://lore.kernel.org/lkml/ZDbRIJknafLnDwtO@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
acmel committed Apr 12, 2023
1 parent 984abd3 commit 4e8db2d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
4 changes: 2 additions & 2 deletions tools/perf/tests/maps.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ static int check_maps(struct map_def *merged, unsigned int size, struct maps *ma
if (map__start(map) != merged[i].start ||
map__end(map) != merged[i].end ||
strcmp(map__dso(map)->name, merged[i].name) ||
refcount_read(&map->refcnt) != 1) {
refcount_read(map__refcnt(map)) != 1) {
failed = true;
}
i++;
Expand All @@ -50,7 +50,7 @@ static int check_maps(struct map_def *merged, unsigned int size, struct maps *ma
map__start(map),
map__end(map),
map__dso(map)->name,
refcount_read(&map->refcnt));
refcount_read(map__refcnt(map)));
}
}
return failed ? TEST_FAIL : TEST_OK;
Expand Down
5 changes: 5 additions & 0 deletions tools/perf/util/map.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@ static inline bool map__priv(const struct map *map)
return map->priv;
}

static inline refcount_t *map__refcnt(struct map *map)
{
return &map->refcnt;
}

static inline size_t map__size(const struct map *map)
{
return map__end(map) - map__start(map);
Expand Down

0 comments on commit 4e8db2d

Please sign in to comment.