mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
perf map: Fix map reference count issues
The find will get the map, ensure puts are done on all paths. Signed-off-by: Ian Rogers <irogers@google.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Namhyung Kim <namhyung@kernel.org> Link: https://lore.kernel.org/r/20240229062048.558799-1-irogers@google.com
This commit is contained in:
parent
1947b92464
commit
ec42d3d568
2 changed files with 8 additions and 10 deletions
|
@ -611,14 +611,14 @@ struct symbol *maps__find_symbol(struct maps *maps, u64 addr, struct map **mapp)
|
|||
struct symbol *result = NULL;
|
||||
|
||||
/* Ensure map is loaded before using map->map_ip */
|
||||
if (map != NULL && map__load(map) >= 0) {
|
||||
if (mapp)
|
||||
*mapp = map;
|
||||
|
||||
if (map != NULL && map__load(map) >= 0)
|
||||
result = map__find_symbol(map, map__map_ip(map, addr));
|
||||
if (!mapp)
|
||||
map__put(map);
|
||||
}
|
||||
|
||||
if (mapp)
|
||||
*mapp = map;
|
||||
else
|
||||
map__put(map);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -2274,9 +2274,7 @@ static int find_perf_probe_point_from_map(struct probe_trace_point *tp,
|
|||
ret = pp->function ? 0 : -ENOMEM;
|
||||
|
||||
out:
|
||||
if (map && !is_kprobe) {
|
||||
map__put(map);
|
||||
}
|
||||
map__put(map);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue