lpm6: fix missing free
lpm6 autotests failed with the default alloc of 512M Memory.
While >=2500M was a workaround it became clear while debugging that it
had a leak.
One could see a lot of output like:
LPM Test tests6[i]: FAIL
LPM: LPM memory allocation failed
It turned out that in rte_lpm6_free
- lpm might not be freed if it didn't find a te (early return)
- lpm->rules_tbl was not freed ever
Fixes: 899d8bc9b3
("lpm: make tailq fully local")
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
parent
34c4b5846e
commit
732a5b5c53
@ -277,15 +277,13 @@ rte_lpm6_free(struct rte_lpm6 *lpm)
|
||||
if (te->data == (void *) lpm)
|
||||
break;
|
||||
}
|
||||
if (te == NULL) {
|
||||
rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK);
|
||||
return;
|
||||
}
|
||||
|
||||
TAILQ_REMOVE(lpm_list, te, next);
|
||||
if (te != NULL)
|
||||
TAILQ_REMOVE(lpm_list, te, next);
|
||||
|
||||
rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK);
|
||||
|
||||
rte_free(lpm->rules_tbl);
|
||||
rte_free(lpm);
|
||||
rte_free(te);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user