zephyr/kernel
iva kik 687f799b7f kernel/queue: fix queue append/get race
k_queue_append and k_queue_alloc_append are in a race
    condition.

    Scenario:
    Using either of the above mentioned functions from a
    preemptive context, can lead to the element being
    appended to the queue to be lost. The element loss happens
    when the k_queue_append is interrupted at a critical point,
    when the list only contains one element and k_queue_get is
    called, before the k_queue_append is allowed to complete.

    Fix:
    Move sys_sflist_peek_tail inside queue_insert(). Add additional
    bool paramenter to queue_insert(), to indicate append/prepend
    operation.
    Fixes #29257

Signed-off-by: iva kik <megatheriumiva@gmail.com>
2020-10-28 17:01:41 +01:00
..
include kernel: add common bits to support TLS 2020-10-24 10:52:00 -07:00
atomic_c.c
cache_handlers.c
CMakeLists.txt
compiler_stack_protect.c
device.c
errno.c kernel: support using thread local storage for errno 2020-10-24 10:52:00 -07:00
fatal.c kernel: fatal: check if _current is NULL 2020-10-24 12:54:32 -04:00
futex.c
idle.c
init.c
Kconfig kernel: support using thread local storage for errno 2020-10-24 10:52:00 -07:00
kheap.c
mailbox.c
mem_domain.c userspace: do nothing if added to same domain 2020-10-22 16:47:07 -07:00
mem_slab.c
mempool_sys.c
mempool.c
mmu.c mmu: Fix mapping_pos calculation 2020-10-23 16:24:04 -04:00
msg_q.c
mutex.c
pipes.c
poll.c
queue.c kernel/queue: fix queue append/get race 2020-10-28 17:01:41 +01:00
sched.c kernel: add context pointer to thread->fn_abort 2020-10-22 23:32:37 -04:00
sem.c
smp.c
stack.c
system_work_q.c
thread_abort.c
thread.c kernel: wipe TLS when dropping to user mode 2020-10-26 13:06:16 +01:00
timeout.c
timer.c
userspace_handler.c
userspace.c
version.c
work_q.c