> -----Original Message----- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Olivier Matz > Sent: Tuesday, April 05, 2016 12:54 PM > To: dev at dpdk.org > Cc: Richardson, Bruce; De Lara Guarch, Pablo > Subject: [dpdk-dev] [PATCH v3 0/4] fix creation of duplicate lpm and hash > > Seen while trying to fix the func_reentrancy autotest. The > series addresses several issues: > > 1/ Hash and lpm return a pointer to an existing object if the user requests > the > creation with an already existing name. This look dangerous: when an > object > is returned, the user does not know if it should be freed or not. > > 2/ There is a race condition in cuckoo_hash as the lock is not held in > rte_hash_create(). We could find some cases where NULL is returned when > the > object already exists (ex: when rte_ring_create() fails). > > 3/ There is a race condition func_reentrancy that can fail even if the tested > API behaves correctly. > > > RFC -> v1: > > - split the patch in 4 patches > - on error, set rte_errno to EEXIST when relevant > - fix locking in cuckoo_hash creation > > v1 -> v2: > > - fix compilation issue in cuckoo hash > - update the hash test to conform to the new behavior > - rework locking modification in cuckoo_hash > - passed autotests: hash, lpm, lpm6, func_reentrancy > > v2 -> v3: > > - rebase against head > - add "Fixes:" in commit messages > - properly set lpm or hash pointers to NULL on error before returning > > Olivier Matz (4): > lpm: allocation of an existing object should fail > hash: allocation of an existing object should fail > hash: keep the list locked at creation > autotest: fix func reentrancy > > app/test/test_func_reentrancy.c | 31 +++++++++++------ > app/test/test_hash.c | 65 +++++++++++++---------------------- > app/test/test_lpm6.c | 2 +- > lib/librte_hash/rte_cuckoo_hash.c | 72 +++++++++++++++++++++++------------ > ---- > lib/librte_hash/rte_fbk_hash.c | 5 ++- > lib/librte_lpm/rte_lpm.c | 10 ++++-- > lib/librte_lpm/rte_lpm6.c | 5 ++- > 7 files changed, 103 insertions(+), 87 deletions(-) > > -- > 2.1.4
I wonder if you should include something in release notes. We are fixing the API, so I guess we don't need to follow the deprecation process, but at least a note in the documentation? Apart from that, Series-acked-by: Pablo de Lara <pablo.de.lara.guarch at intel.com> Thanks!