diff options
author | Arnaldo Carvalho de Melo <[email protected]> | 2023-04-12 12:36:58 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <[email protected]> | 2023-04-12 12:49:16 -0300 |
commit | 4e8db2d7520f780f86055465c680e20327008a34 (patch) | |
tree | f357bfc617432f8cb6f3a5e29a9b500b34d3ddc0 | |
parent | 984abd349d0f76d4b267abc0d8e1a86af3ec2d84 (diff) |
perf map: Add map__refcnt() accessor to use in the maps test
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 <[email protected]>
Cc: Alexey Bayduraev <[email protected]>
Cc: Dmitriy Vyukov <[email protected]>
Cc: Ian Rogers <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Riccardo Mancini <[email protected]>
Cc: Stephane Eranian <[email protected]>
Cc: Stephen Brennan <[email protected]>
Link: https://lore.kernel.org/lkml/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
-rw-r--r-- | tools/perf/tests/maps.c | 4 | ||||
-rw-r--r-- | tools/perf/util/map.h | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/tools/perf/tests/maps.c b/tools/perf/tests/maps.c index 1c7293476aca..a6278f9c8b71 100644 --- a/tools/perf/tests/maps.c +++ b/tools/perf/tests/maps.c @@ -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++; @@ -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; diff --git a/tools/perf/util/map.h b/tools/perf/util/map.h index 102485699aa8..f89ab7c2d327 100644 --- a/tools/perf/util/map.h +++ b/tools/perf/util/map.h @@ -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); |