zephyr/kernel
Andrzej Głąbek e60af79268 kernel: timer: Eliminate a race condition in expiration handling
When a timer is restarted from a high priority interrupt, it may
happen that the timer is re-added to the timeout list right after
it is removed from that list prior to execution of its expiration
handler but before that execution actually occurs. This leads to
an assertion failure reported for `z_add_timeout()` because then
that function, called from `z_timer_expiration_handler()` for
periodic timers, turns out to be adding a timeout that is already
added to the timeout list.
This commit detects such situation in `z_timer_expiration_handler()`
and makes that function exit immediately when that occurs (as the
timer was restared, its expiration handler should not be executed).

Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
2023-02-08 10:17:56 +01:00
..
include smp: Move arrays to use CONFIG_MP_MAX_NUM_CPUS 2022-10-17 14:40:12 +09:00
paging arch/kernel/soc/samples: use unsigned int for irq_lock() 2022-07-14 14:37:13 -05:00
atomic_c.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
banner.c kernel: banner: Remove unnecessary header 2023-01-09 12:07:28 -05:00
CMakeLists.txt cache: Fix cache API calling from userspace 2022-08-23 10:14:17 +02:00
compiler_stack_protect.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
condvar.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
device.c kernel: move z_sys_init_run_level to init.c 2022-10-12 18:49:12 +09:00
errno.c kernel: Allow Zephyr to use libc's internal errno 2022-05-12 19:06:48 -04:00
events.c kernel: events: add function to clear events 2022-12-02 09:50:42 -05:00
fatal.c debug: coredump: add xtensa intel adsp, support toolchains 2022-06-23 15:44:45 -04:00
futex.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
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
Kconfig kernel: Kconfig: Increase the main stack size for ARM when TEST 2022-12-09 21:59:10 +09:00
Kconfig.vm everywhere: fix typos 2022-03-18 13:24:08 -04:00
kheap.c kernel: kheap: fix k_heap_aligned_alloc handling of K_FOREVER 2022-09-29 10:39:12 -05:00
mailbox.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
main_weak.c kernel: Add C++ main() support 2022-11-05 16:41:45 +09:00
mem_domain.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
mem_slab.c kernel: Extend slabs memory usage stats 2022-07-12 13:59:26 +00:00
mempool.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
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 kernel: mutex: fix races when lock timeout 2022-08-12 17:40:20 +02:00
pipes.c kernel: allow k_poll to wait on pipes 2022-08-24 17:49:20 +00:00
poll.c kernel: allow k_poll to wait on pipes 2022-08-24 17:49:20 +00:00
queue.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
sched.c kernel: sched: Remove possible deadcode 2023-01-09 12:07:28 -05:00
sem.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
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 kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
system_work_q.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
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_handler.c kernel: migrate includes to <zephyr/...> 2022-05-09 09:26:20 +02:00
userspace.c kernel: pipes: rewrite pipes implementation 2022-08-17 19:31:25 +02:00
version.c
work.c kernel: workq: Add internal function z_work_submit_to_queue() 2022-05-10 18:39:51 +02:00
xip.c kernel: remove redundant <zephyr/zephyr.h> includes 2022-06-15 09:13:11 +02:00