[dpdk-dev] lpm: fix freeing memory

Message ID 1478168159-57529-1-git-send-email-wei.dai@intel.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Wei Dai Nov. 3, 2016, 10:15 a.m. UTC
  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 | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Thomas Monjalon Nov. 6, 2016, 10:46 p.m. UTC | #1
2016-11-03 18:15, Wei Dai:
> 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>

Applied, thanks
  

Patch

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index ec67765..8c15c4c 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -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);