zephyr/kernel
Andy Ross d00f9b594b kernel/work: Fix race under with delayed work item cancellation
The call to unschedule_locked() would return true ("successfully
unscheduled") even in the case where the underlying z_abort_timeout()
failed (because the callback was already unpended and
in-progress/complete/about-to-be-run, remember that timeout callbacks
are unsynchronized), leading to state bugs and races against the
callback behavior.

Correctly detect that case and propagate the error to the caller.

Fixes #51872

Signed-off-by: Andy Ross <andyross@google.com>
2023-02-11 12:14:16 +09:00
..
include kernel: Add routine to walk a wait queue 2023-02-11 06:45:13 +09:00
paging
CMakeLists.txt cache: Fix cache API calling from userspace 2022-08-23 10:14:17 +02:00
Kconfig kernel: Kconfig: Increase the main stack size for ARM when TEST 2022-12-09 21:59:10 +09:00
Kconfig.vm
atomic_c.c
banner.c kernel: banner: Remove unnecessary header 2023-01-09 12:07:28 -05:00
compiler_stack_protect.c
condvar.c
device.c kernel: move z_sys_init_run_level to init.c 2022-10-12 18:49:12 +09:00
errno.c
events.c kernel: events: add function to clear events 2022-12-02 09:50:42 -05:00
fatal.c
futex.c
idle.c kernel: idle: fix -Werror=misleading-indentation 2022-10-12 18:43:15 +02:00
init.c kernel: mark z_cstart to not have stack protector 2023-01-24 13:04:45 -05:00
kheap.c kernel: kheap: fix k_heap_aligned_alloc handling of K_FOREVER 2022-09-29 10:39:12 -05:00
mailbox.c
main_weak.c kernel: Add C++ main() support 2022-11-05 16:41:45 +09:00
mem_domain.c
mem_slab.c
mempool.c
mmu.c kernel: mmu: fix potential running out of virtual memory space 2022-11-17 15:56:04 +00:00
msg_q.c kernel: k_msgq: add peek at function 2023-01-26 10:00:29 +00:00
mutex.c
pipes.c kernel: pipes: ISRs use a private pipe descriptor 2023-02-11 06:45:13 +09:00
poll.c kernel: allow k_poll to wait on pipes 2022-08-24 17:49:20 +00:00
queue.c
sched.c kernel: pipes: Change method of unpending waiters 2023-02-11 06:45:13 +09:00
sem.c
smp.c smp: Move for loops to use arch_num_cpus instead of CONFIG_MP_NUM_CPUS 2022-10-21 13:14:58 +02:00
stack.c
system_work_q.c
thread.c smp: Move for loops to use arch_num_cpus instead of CONFIG_MP_NUM_CPUS 2022-10-21 13:14:58 +02:00
timeout.c kernel: resolve static analysis false positives 2023-01-05 18:23:04 +00:00
timer.c kernel: timer: Eliminate a race condition in expiration handling 2023-02-08 10:17:56 +01:00
usage.c smp: Move for loops to use arch_num_cpus instead of CONFIG_MP_NUM_CPUS 2022-10-21 13:14:58 +02:00
userspace.c
userspace_handler.c
version.c
work.c kernel/work: Fix race under with delayed work item cancellation 2023-02-11 12:14:16 +09:00
xip.c