service: fix crash on exit
authorHarry van Haaren <harry.van.haaren@intel.com>
Wed, 11 Mar 2020 14:39:27 +0000 (14:39 +0000)
committerDavid Marchand <david.marchand@redhat.com>
Fri, 13 Mar 2020 12:56:46 +0000 (13:56 +0100)
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: da23f0aa87d8 ("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>
lib/librte_eal/common/rte_service.c

index 7e537b8..b0b78ba 100644 (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);