OSDN Git Service

perf map: Check if the map still has some refcounts on exit
authorArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 25 Oct 2019 18:14:50 +0000 (15:14 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 6 Nov 2019 18:43:06 +0000 (15:43 -0300)
We were checking just if it was still on some rb tree, but that is not
the only way that this map can still have references, map->refcnt is
there exactly for this, use it.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lkml.kernel.org/n/tip-hany65tbeavsax7n3xvwl9pc@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/map.c

index eec9b28..c9ba495 100644 (file)
@@ -288,7 +288,7 @@ bool map__has_symbols(const struct map *map)
 
 static void map__exit(struct map *map)
 {
-       BUG_ON(!RB_EMPTY_NODE(&map->rb_node));
+       BUG_ON(refcount_read(&map->refcnt) != 0);
        dso__zput(map->dso);
 }