|
@@ -123,6 +123,7 @@ static void perf_evlist__purge(struct perf_evlist *evlist)
|
|
|
void perf_evlist__exit(struct perf_evlist *evlist)
|
|
|
{
|
|
|
zfree(&evlist->mmap);
|
|
|
+ zfree(&evlist->backward_mmap);
|
|
|
fdarray__exit(&evlist->pollfd);
|
|
|
}
|
|
|
|
|
@@ -973,17 +974,20 @@ static void perf_evlist__munmap_nofree(struct perf_evlist *evlist)
|
|
|
{
|
|
|
int i;
|
|
|
|
|
|
- if (evlist->mmap == NULL)
|
|
|
- return;
|
|
|
+ if (evlist->mmap)
|
|
|
+ for (i = 0; i < evlist->nr_mmaps; i++)
|
|
|
+ perf_mmap__munmap(&evlist->mmap[i]);
|
|
|
|
|
|
- for (i = 0; i < evlist->nr_mmaps; i++)
|
|
|
- perf_mmap__munmap(&evlist->mmap[i]);
|
|
|
+ if (evlist->backward_mmap)
|
|
|
+ for (i = 0; i < evlist->nr_mmaps; i++)
|
|
|
+ perf_mmap__munmap(&evlist->backward_mmap[i]);
|
|
|
}
|
|
|
|
|
|
void perf_evlist__munmap(struct perf_evlist *evlist)
|
|
|
{
|
|
|
perf_evlist__munmap_nofree(evlist);
|
|
|
zfree(&evlist->mmap);
|
|
|
+ zfree(&evlist->backward_mmap);
|
|
|
}
|
|
|
|
|
|
static struct perf_mmap *perf_evlist__alloc_mmap(struct perf_evlist *evlist)
|