walnux/drivers
Kerogit a3f8b55143 drivers/serial/serial: prevent race conditions on 8-bit architectures
Some code paths in drivers/serial/serial.c load head and tail values
of receive and transmit circular buffers with interrupts enabled,
making it possible that the interrupt handler changes the value.
As noted in the code, this is safe as long as the load itself is atomic.

That is not true for 8bit architectures which fetch the 16-bit values
using two load instructions. If interrupt handler runs between those
two instructions and changes the value, the read returns corrupted data.

This patch introduces CONFIG_ARCH_LDST_16BIT_NOT_ATOMIC configuration
option which is automatically selected for AVR architecture. Based
on this option, head and tail values are reduced to 8-bit length
so the read remains atomic.

Patch was tested by building on rv-virt:nsh - disassembly of functions
from serial.c showed no difference which is correct as Risc-V does
not need to protect reads of these values. There should be no impact
for architectures that do not set the new configuration option.

It was also tested by by custom echo application running on AVR128DA28.

Signed-off-by: Kerogit <kr.git@kerogit.eu>
2025-06-19 10:01:24 -03:00
..
1wire drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
aie drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
analog analog/ads1115: Speed up channel measurement delays 2025-05-29 15:23:06 +08:00
audio style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
bch drivers/bch: Add CONFIG_BCH_FORCE_INDIRECT 2025-04-03 16:21:51 +08:00
can style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
clk style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
contactless drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
coresight arch | boards | drivers: fix whitespace issues for switch case statements 2025-05-23 10:48:41 +08:00
crypto crypto/se05x: Allow set_enable_pin to be NULL and fix error handling 2024-11-07 11:37:58 +08:00
devicetree style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
dma drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
dummy drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
eeprom drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
efuse drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
i2c fs/drivers: Avoid causing a busy loop in the program due to context switching induced by sem_post. 2025-03-17 10:44:26 +01:00
i2s drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
i3c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
input style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
ioexpander style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
ipcc style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
lcd drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
leds drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
loop drivers/iovec: revert vector io implement from loop/null/zero driver 2025-01-22 11:29:39 +08:00
math drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
misc driver/optee: fix compile break 2025-06-13 20:14:48 +08:00
mmcsd style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
modem drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
motor style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
mtd drivers/mtd: fix compile warning 2025-06-03 17:33:14 +08:00
net fs/file: unify prefix about file_xxx api, like file_open, file_ioctl 2025-06-12 18:12:42 +08:00
note note/notestream: Call lib_fileoutstream_open in notefile_register 2025-06-17 20:58:13 +08:00
pci style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
pinctrl drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
pipes fs/drivers: Avoid causing a busy loop in the program due to context switching induced by sem_post. 2025-03-17 10:44:26 +01:00
power drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
rc style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
regmap style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
reset style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
rf drivers/rf: migrate license to ASF 2024-11-06 19:46:13 +08:00
rmt drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
rpmsg style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
rptun style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
segger drivers/segger:Add config option to allow defining the macro as variable 2025-06-16 14:56:06 +08:00
sensors sensors/nau7802: Fix format warning 2025-06-04 15:26:47 +08:00
serial drivers/serial/serial: prevent race conditions on 8-bit architectures 2025-06-19 10:01:24 -03:00
spi style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
syslog drivers/syslog: Add RFC 5424 protocol support 2025-06-13 20:26:57 +08:00
thermal style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
timers arch: Flag all definitions of up_perf_* functions with CONFIG_ARCH_HAVE_PERF_EVENTS 2025-06-06 17:31:10 +08:00
usbdev drivers/usbdev/cdcncm.c: Fix issue with unplug/replug of USB causing link not to re-establish 2025-05-24 12:29:07 +08:00
usbhost style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
usbmisc style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
usbmonitor drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
usrsock drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
vhost style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
video arch | boards | drivers: fix whitespace issues for switch case statements 2025-05-23 10:48:41 +08:00
virtio style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
wireless style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
.gitignore
CMakeLists.txt drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
drivers_initialize.c usbhost: add common usb host waiter and drivers initialization 2025-05-15 21:58:57 +08:00
Kconfig AI engine driver 2024-10-16 13:57:23 +08:00
Makefile drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00