nuttx/drivers
yi chen db90bd8c4b drivers/serial: hold xmit.lock around echo in uart_readv()
uart_putxmitchar() manipulates dev->xmit.head/buffer directly with
no internal locking - every other caller (uart_write()) takes
dev->xmit.lock first. uart_readv()'s ECHO handling (both the
backspace/delete erase sequence and the normal character echo)
calls uart_putxmitchar() without taking that lock, so a concurrent
uart_write() and a local echo can race on the same circular buffer
state, corrupting it.

Take dev->xmit.lock around each echo's uart_putxmitchar() calls,
matching what uart_write() already does. uart_readv() holds
dev->recv.lock for its own duration, but no other code path ever
acquires recv.lock while holding xmit.lock, so nesting xmit.lock
inside the existing recv.lock scope here doesn't introduce a new
lock-ordering cycle.

Fixes #14845

Signed-off-by: yi chen <94xhn1@gmail.com>
2026-08-03 17:16:48 +08:00
..
1wire drivers: 1wire: Fix DS2XXX device type bounds 2026-07-06 19:55:05 +08:00
aie include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
analog drivers/analog/dac7554: Add NULL checks after kmm_malloc in dac7554_initialize 2026-05-30 17:50:14 +08:00
audio drivers/audio: Fix audio tone generator 2026-07-02 08:59:54 -03:00
bch !include/fcntl.h: align open flags with Linux values 2026-07-03 10:33:47 +08:00
can arch/arm/src/at32/at32_can: Division by Zero in CAN Bit Timing Commands 2026-07-04 01:56:16 +08:00
clk !include/fcntl.h: align open flags with Linux values 2026-07-03 10:33:47 +08:00
contactless drivers/contactless/mfrc522: Contactless Driver Is Not Robust 2026-07-03 10:33:41 +08:00
coresight style: fix checkpatch issues after debug.h move 2026-04-07 07:50:06 -03:00
crypto stdlib/rand: replace weak LCG with xorshift32 PRNG 2026-07-04 01:59:35 +08:00
devicetree include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03: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/eeprom/i2c_xx24xx: Integer Overflow in I2C EEPROM ee24xx_seek() 2026-06-23 10:02:10 +08:00
efuse include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
i2c drivers/i2c: I2C_SLAVE_DRIVER depends on I2C_SLAVE 2026-08-03 17:16:04 +08:00
i2s drivers: Fix comment typos — 'register' → 'registered' across drivers. 2026-05-28 22:21:47 +08:00
i3c drivers: Fix comment typos — 'register' → 'registered' across drivers. 2026-05-28 22:21:47 +08:00
input drivers/input/button_upper.c: Fix compilation with CONFIG_DISABLE_ALL_SIGNALS 2026-06-17 17:11:26 +08:00
ioexpander include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
ipcc include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
lcd !boards: Remove NSH_ARCHINIT and board_app_initialize 2026-05-02 18:36:46 +08:00
leds drivers: leds: Fix LP503X bank mode LED bounds 2026-07-06 19:57:17 +08:00
loop include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
math include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
misc include/fcntl.h: remove O_RDOK/O_WROK aliases 2026-07-03 10:33:47 +08:00
mmcsd !include/fcntl.h: align open flags with Linux values 2026-07-03 10:33:47 +08:00
modem style: fix checkpatch issues after debug.h move 2026-04-07 07:50:06 -03:00
motor drivers: Fix comment typos — 'register' → 'registered' across drivers. 2026-05-28 22:21:47 +08:00
mtd !include/fcntl.h: align open flags with Linux values 2026-07-03 10:33:47 +08:00
net drivers/net: Fix typo in lan9250_set_txavailable function name. 2026-05-29 09:43:20 +08:00
note !nuttx: drop redundant casts on tv_sec/tv_nsec and fix printf formats 2026-05-19 16:21:28 +08:00
pci drivers: pci: Fix EPF debug assertions 2026-07-06 19:56:58 +08:00
pinctrl drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
pipes !include/fcntl.h: align open flags with Linux values 2026-07-03 10:33:47 +08:00
power !include/fcntl.h: align open flags with Linux values 2026-07-03 10:33:47 +08:00
rc drivers: Fix comment typos — 'register' → 'registered' across drivers. 2026-05-28 22:21:47 +08:00
regmap include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
reset include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
rf include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
rpmsg drivers/rpmsg: Fix typo rpmsg_device_destory -> rpmsg_device_destroy 2026-05-30 17:49:03 +08:00
rptun drivers/rptun: guard nxsched_waitpid with CONFIG_SCHED_WAITPID 2026-05-21 06:28:36 +08:00
segger drivers/segger: Download systemview from NuttX Mirror Repo 2026-06-10 22:40:26 +08:00
sensors !include/fcntl.h: align open flags with Linux values 2026-07-03 10:33:47 +08:00
serial drivers/serial: hold xmit.lock around echo in uart_readv() 2026-08-03 17:16:48 +08:00
spi drivers: Fix comment typos — 'register' → 'registered' across drivers. 2026-05-28 22:21:47 +08:00
syslog syslog: avoid an infinite loop if one channel fails 2026-06-24 09:46:34 +08:00
thermal include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
timers drivers/timers: Fix non-atomic clock read in up_timer_gettime. 2026-06-17 17:12:04 +08:00
usbdev drivers/usbdev: rndis: Reject truncated responses 2026-07-06 19:56:11 +08:00
usbhost drivers/usbhost_hidmouse: fix button detection in touchscreen example 2026-05-22 10:38:25 +08:00
usbmisc include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
usbmonitor include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
usrsock include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
vhost include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
video drivers: Fix comment typos — 'Pubic' → 'Public' across drivers and headers. 2026-07-04 02:00:24 +08:00
virtio include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
wireless drivers: wireless: bound GS2200M sscanf fields 2026-07-06 19:57:58 +08:00
.gitignore build: Remve the unnecessary .gitignore 2020-05-23 18:00:40 +01:00
CMakeLists.txt drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
drivers_initialize.c serial/uart_rpmsg: add _raw version of driver 2026-02-23 09:19:57 -03:00
Kconfig espressif/rmt: replace rmtchar with arch-specific lirc adapter 2026-04-04 11:18:32 -03:00
Makefile docs/rc: document RC/LIRC drivers and remove empty drivers/rmt files 2026-04-04 11:18:32 -03:00