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: 899d8bc9b3b5 ("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…
x
Reference in New Issue
Block a user