From: George McCollister Date: Thu, 1 Aug 2013 17:40:01 +0000 (-0500) Subject: journal: fix hashmap leak in mmap-cache X-Git-Tag: v207~183 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=8e6d9397b550f5617fc9231e3a275348cda23c89;hp=3b6c7e78cf38c1cad8fbb44d21e40ebf69c7cc77 journal: fix hashmap leak in mmap-cache hashmap_free() wasn't being called on m->contexts and m->fds resulting in a leak. To reproduce do: while(1) { sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY); sd_journal_close(j); } Memory usage will increase until OOM. --- diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c index 767f55552..03b57beb0 100644 --- a/src/journal/mmap-cache.c +++ b/src/journal/mmap-cache.c @@ -307,9 +307,13 @@ static void mmap_cache_free(MMapCache *m) { while ((c = hashmap_first(m->contexts))) context_free(c); + hashmap_free(m->contexts); + while ((f = hashmap_first(m->fds))) fd_free(f); + hashmap_free(m->fds); + while (m->unused) window_free(m->unused);