service: fix crash on exit

This commit releases all service cores from their role,
returning them to ROLE_RTE on rte_service_finalize().

This fixes an issue relating to the service cores causing
a race-condition on rte_eal_cleanup(), where the service core
could still be executing while the main thread has already
free-d the service memory, leading to a segfault.

Fixes: da23f0aa87 ("service: fix memory leak with new function")
Cc: stable@dpdk.org

Reported-by: David Marchand <david.marchand@redhat.com>
Reported-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Aaron Conole <aconole@redhat.com>
This commit is contained in:
Harry van Haaren 2020-03-11 14:39:27 +00:00 committed by David Marchand
parent 8a4baf06c1
commit 33666b448f

View File

@ -122,6 +122,9 @@ rte_service_finalize(void)
if (!rte_service_library_initialized)
return;
rte_service_lcore_reset_all();
rte_eal_mp_wait_lcore();
rte_free(rte_services);
rte_free(lcore_states);