On 06.12.2018 20:05, Arnaldo Carvalho de Melo wrote: > Em Wed, Dec 05, 2018 at 08:19:41PM +0300, Alexey Budankov escreveu: >> >> Sending a part which was missed between v12 and v13 of the patch set >> introducing AIO trace streaming for perf record mode. >> >> The part is essential to avoid memory leakage during deallocation >> of AIO related trace data buffers. >> >> It is applied on top of acme perf/core repo. >> >> Signed-off-by: Alexey Budankov <alexey.budan...@linux.intel.com> >> --- >> tools/perf/util/mmap.c | 10 ++++++++++ >> 1 file changed, 10 insertions(+) >> >> diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c >> index ab30555d2afc..169d02973757 100644 >> --- a/tools/perf/util/mmap.c >> +++ b/tools/perf/util/mmap.c >> @@ -207,8 +207,18 @@ static int perf_mmap__aio_mmap(struct perf_mmap *map, >> struct mmap_params *mp) >> >> static void perf_mmap__aio_munmap(struct perf_mmap *map) >> { >> + int i; >> + >> + for (i = 0; i < map->aio.nr_cblocks; ++i) { >> + if (map->aio.data[i]) >> + zfree(&map->aio.data[i]); >> + } >> if (map->aio.data) >> zfree(&map->aio.data); >> + if (map->aio.cblocks) >> + zfree(&map->aio.cblocks); >> + if (map->aio.aiocb) >> + zfree(&map->aio.aiocb); > > There is no need to check for NULL before calling zfree(), as it is just > a wrapper for free that sets that variable to NULL after calling it. > > And free(NULL) is valid, just a noop to avoid having all those tests > before each call to free(). I'm making those plain zfree() and later > will do a sweep at removing other cases.
Thank you. -Alexey > >> } >> >> int perf_mmap__aio_push(struct perf_mmap *md, void *to, int idx, >