zephyr/lib/os
Yong Cong Sin 1a578eb72c lib: os: mpsc_pbuf: do not wait when spinlock is held
Check if the spinlock is held before attempting to wait by
taking the semaphore, as that would cause a context switch which
isn't allowed and will trigger an assertion error when
`CONFIG_SPIN_VALIDATE` is enabled.

Logging in spinlock-held context when the log buffer is full can lead
to an infinite assertion error loop, as the logging subsys attempts to
allocate buffer when there's none available, it will try to wait for
one and thus triggers the assertion error, the error message will be
printed through the logging sybsys but there's no buffer available,
so it will try to wait for one and triggers another assertion error..
This loop just goes on and on forever, and nothing gets printed to
the terminal.

Added a test to validate the fix.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
Signed-off-by: Maxim Adelman <imax@meta.com>
2025-01-06 06:53:52 +01:00
..
zvfs net: Deprecate CONFIG_NET_SOCKETS_POLL_MAX 2024-10-14 13:01:51 +02:00
assert.c llext: export some symbols 2023-12-01 10:08:12 -05:00
cbprintf.c
cbprintf_complete.c ARCMWDT: Fix cbprintf issue with omitted function prototype 2024-06-28 07:21:11 -04:00
cbprintf_nano.c ARCMWDT: Fix cbprintf issue with omitted function prototype 2024-06-28 07:21:11 -04:00
cbprintf_packaged.c lib: os: cbprintf_packaged: Fix cbprintf_package_convert 2024-11-01 09:56:03 -05:00
CMakeLists.txt net: sockets: move poll implementation to zvfs 2024-10-14 13:01:51 +02:00
fdtable.c posix: fcntl.h: define constants in terms of zvfs constants 2025-01-05 09:58:54 +01:00
Kconfig lib: os: spsc_pbuf: Clarify using cache management in the module 2024-07-01 16:07:30 -04:00
Kconfig.cbprintf libc/picolibc: Support 'long long' and 'minimal' printf variants 2023-11-20 06:07:58 -05:00
mpsc_pbuf.c lib: os: mpsc_pbuf: do not wait when spinlock is held 2025-01-06 06:53:52 +01:00
mutex.c coding guidelines: comply with MISRA Rule 12.1. 2024-06-13 20:28:23 -04:00
p4wq.c lib: os: p4wq: fix K_P4WQ_DELAYED_START mode 2024-12-04 22:26:38 -05:00
poweroff.c lib: os: add support for system power off 2023-08-04 16:59:36 +02:00
printk.c lib: os: change __printk_get_hook return type to printk_hook_fn_t 2024-07-27 10:41:01 +03:00
reboot.c lib: os: reboot: dump coverage info on sys_reboot 2024-06-15 04:39:53 -04:00
sem.c coding guidelines: comply with MISRA Rule 12.1. 2024-06-13 20:28:23 -04:00
spsc_pbuf.c spsc_pbuf: fix cache invalidation in spsc_pbuf_free 2024-02-01 13:10:28 -06:00
thread_entry.c arch: kernel: lib: toolchain: Standardize TLS keyword 2024-09-23 10:01:48 +02:00
user_work.c