lpm: fix freeing memory
authorWei Dai <wei.dai@intel.com>
Thu, 3 Nov 2016 10:15:59 +0000 (18:15 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 6 Nov 2016 22:46:03 +0000 (23:46 +0100)
The memory pointed by lpm->rules_tbl should also be freed
when memory malloc for tbl8 fails in rte_lpm_create_v1604( ).
And the memory pointed by lpm->tbl8 should also be freed
when the lpm object is freed in rte_lpm_free_v1604( ).

Fixes: f1f7261838b3 ("lpm: add a new config structure for IPv4")

Signed-off-by: Morten Brørup <mb@smartsharesystems.com>
Signed-off-by: Wei Dai <wei.dai@intel.com>
lib/librte_lpm/rte_lpm.c

index ec67765..8c15c4c 100644 (file)
@@ -321,6 +321,7 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
        if (lpm->tbl8 == NULL) {
                RTE_LOG(ERR, LPM, "LPM tbl8 memory allocation failed\n");
+               rte_free(lpm->rules_tbl);
                rte_free(lpm);
                lpm = NULL;
                rte_free(te);
@@ -402,6 +403,7 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 
        rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK);
 
+       rte_free(lpm->tbl8);
        rte_free(lpm->rules_tbl);
        rte_free(lpm);
        rte_free(te);