On Fri, Oct 21, 2022 at 1:36 PM Van Haaren, Harry <[email protected]> wrote: > > > > Assume thread T2 is a service lcore that is in the middle of executing > > a service function. Also, assume thread T1 concurrently calls > > rte_service_lcore_stop(), which will set the "service_active_on_lcore" > > state to false. If thread T1 then calls rte_service_may_be_active(), > > it can return zero even though T2 is still running the service function. > > If T1 then proceeds to free data being used by T2, a crash can ensue. > > > > Move the logic that clears the "service_active_on_lcore" state from the > > rte_service_lcore_stop() function to the service_runner_func() to > > ensure that we: > > - don't let the "service_active_on_lcore" state linger as 1 > > - don't clear the state early > > > > Fixes: 6550113be62d ("service: fix lingering active status") > > Cc: [email protected] > > > > Signed-off-by: Erik Gabriel Carrillo <[email protected]> > Acked-by: Harry van Haaren <[email protected]>
Applied, thanks. -- David Marchand

