Commit 32a1c08b authored by Peter Lieven's avatar Peter Lieven Committed by Juan Quintela
Browse files

page_cache: fix memory leak



XBZRLE encoded migration introduced a MRU page cache
meachnism. Unfortunately, cached items where never freed in
case of a collision in the page cache on cache_insert().

This lead to out of memory conditions during XBZRLE migration
if the page cache was small and there where a lot of collisions
in the cache.

Signed-off-by: default avatarPeter Lieven <pl@kamp.de>
Signed-off-by: default avatarOrit Wasserman <owasserm@redhat.com>

Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarJuan Quintela <quintela@redhat.com>
parent a0ee2031
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -152,6 +152,9 @@ void cache_insert(PageCache *cache, uint64_t addr, uint8_t *pdata)
    /* actual update of entry */
    it = cache_get_by_addr(cache, addr);

    /* free old cached data if any */
    g_free(it->it_data);

    if (!it->it_data) {
        cache->num_items++;
    }