numam-dpdk/lib/eal/common
Erik Gabriel Carrillo 329280c53e service: fix early move to inactive status
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: 6550113be6 ("service: fix lingering active status")
Cc: stable@dpdk.org

Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2022-10-21 14:54:26 +02:00
..
eal_common_bus.c bus: cleanup devices on shutdown 2022-10-04 21:20:15 +02:00
eal_common_class.c
eal_common_config.c eal: remove unneeded header includes 2022-06-21 16:46:56 +02:00
eal_common_cpuflags.c
eal_common_debug.c eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
eal_common_dev.c dev: provide bus specific information 2022-09-23 16:14:34 +02:00
eal_common_devargs.c bus: hide bus object 2022-09-23 16:14:34 +02:00
eal_common_dynmem.c eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
eal_common_errno.c lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
eal_common_fbarray.c lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
eal_common_hexdump.c lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
eal_common_hypervisor.c
eal_common_interrupts.c interrupts: extend event list 2021-10-25 21:20:12 +02:00
eal_common_launch.c eal: remove panic on remote launch failure 2022-10-03 12:03:11 +02:00
eal_common_lcore.c eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
eal_common_log.c eal: remove unneeded header includes 2022-06-21 16:46:56 +02:00
eal_common_mcfg.c mem: use WFE for init sync on aarch64 2021-10-20 08:22:18 +02:00
eal_common_memalloc.c eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
eal_common_memory.c lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
eal_common_memzone.c lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
eal_common_options.c eal: export coremask parsing helper 2022-09-23 12:07:49 +02:00
eal_common_proc.c eal: fix data race in multi-process support 2022-10-10 01:58:31 +02:00
eal_common_string_fns.c eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
eal_common_tailqs.c lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
eal_common_thread.c eal: get/set thread attributes 2022-10-06 21:03:14 +02:00
eal_common_timer.c lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
eal_common_trace_ctf.c trace: fix metadata dump 2022-10-20 13:34:19 +02:00
eal_common_trace_points.c
eal_common_trace_utils.c trace: remove limitation on directory 2022-10-20 13:34:19 +02:00
eal_common_trace.c trace: remove limitation on trace point name 2022-10-20 13:34:19 +02:00
eal_common_uuid.c
eal_filesystem.h
eal_firmware.h eal: handle compressed firmware 2021-07-07 16:41:53 +02:00
eal_hugepages.h
eal_internal_cfg.h eal/linux: allocate worker lcore stacks in hugepages 2022-06-23 22:36:33 +02:00
eal_interrupts.h interrupts: extend event list 2021-10-25 21:20:12 +02:00
eal_log.h
eal_memalloc.h
eal_memcfg.h
eal_options.h eal/linux: allocate worker lcore stacks in hugepages 2022-06-23 22:36:33 +02:00
eal_private.h bus: cleanup devices on shutdown 2022-10-04 21:20:15 +02:00
eal_thread.h eal: remove panic on remote launch failure 2022-10-03 12:03:11 +02:00
eal_trace.h trace: remove limitation on directory 2022-10-20 13:34:19 +02:00
hotplug_mp.c bus: hide bus object 2022-09-23 16:14:34 +02:00
hotplug_mp.h lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
malloc_elem.c lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
malloc_elem.h test/mem: disable ASan when accessing unallocated memory 2022-05-11 14:05:30 +02:00
malloc_heap.c malloc: fix storage size for some allocations 2022-09-26 11:40:20 +02:00
malloc_heap.h mem: cleanup multiprocess resources 2022-02-11 19:49:22 +01:00
malloc_mp.c malloc: fix storage size for some allocations 2022-09-26 11:40:20 +02:00
malloc_mp.h lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
meson.build interrupts: add allocator and accessors 2021-10-25 21:20:12 +02:00
rte_keepalive.c
rte_malloc.c malloc: remove unused function to set limit 2022-10-03 19:37:54 +02:00
rte_random.c eal: provide pseudo-random floating point number 2022-06-22 10:59:09 +02:00
rte_reciprocal.c
rte_service.c service: fix early move to inactive status 2022-10-21 14:54:26 +02:00
rte_version.c