mempool: fix leak if populate fails
authorNipun Gupta <nipun.gupta@nxp.com>
Fri, 11 Nov 2016 15:47:10 +0000 (21:17 +0530)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sat, 12 Nov 2016 21:27:09 +0000 (22:27 +0100)
This patch fixes the issue of memzone not being freed incase the
rte_mempool_populate_phys fails in the rte_mempool_populate_default

This issue was identified when testing with OVS ~2.6
- configure the system with low memory (e.g. < 500 MB)
- add bridge and dpdk interfaces
- delete brigde
- keep on repeating the above sequence.

Fixes: d1d914ebbc25 ("mempool: allocate in several memory chunks by default")

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_mempool/rte_mempool.c

index e94e56f..aa513b9 100644 (file)
@@ -578,8 +578,10 @@ rte_mempool_populate_default(struct rte_mempool *mp)
                                mz->len, pg_sz,
                                rte_mempool_memchunk_mz_free,
                                (void *)(uintptr_t)mz);
-               if (ret < 0)
+               if (ret < 0) {
+                       rte_memzone_free(mz);
                        goto fail;
+               }
        }
 
        return mp->size;