linux/drivers/tty
Claudiu Beznea 17157612e4 serial: sh-sci: Check that the DMA cookie is valid
commit c3ca8a0aac upstream.

The driver updates struct sci_port::tx_cookie to zero right before the TX
work is scheduled, or to -EINVAL when DMA is disabled.
dma_async_is_complete(), called through dma_cookie_status() (and possibly
through dmaengine_tx_status()), considers cookies valid only if they have
values greater than or equal to 1.

Passing zero or -EINVAL to dmaengine_tx_status() before any TX DMA
transfer has started leads to an incorrect TX status being reported, as the
cookie is invalid for the DMA subsystem. This may cause long wait times
when the serial device is opened for configuration before any TX activity
has occurred.

Check that the TX cookie is valid before passing it to
dmaengine_tx_status().

Fixes: 7cc0e0a43a ("serial: sh-sci: Check if TX data was written to device in .tx_empty()")
Cc: stable <stable@kernel.org>
Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Link: https://patch.msgid.link/20251217135759.402015-1-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-01-02 12:57:15 +01:00
..
hvc Merge 6.17-rc6 into tty-next 2025-09-15 08:27:31 +02:00
ipwireless treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
serdev serdev: Drop dev_pm_domain_detach() call 2025-09-06 15:48:38 +02:00
serial serial: sh-sci: Check that the DMA cookie is valid 2026-01-02 12:57:15 +01:00
vt vt: move vc_saved_screen to within tty allocated judgment 2025-09-12 15:58:41 +02:00
amiserial.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
ehv_bytechan.c tty: ehv_bytechan: convert to u8 and size_t 2023-12-08 12:02:37 +01:00
goldfish.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
Kconfig TTY/Serial driver updates for 6.15-rc1 2025-04-02 18:17:33 -07:00
Makefile tty: add rpmsg driver 2021-10-21 12:35:35 +02:00
mips_ejtag_fdc.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
moxa.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
mxser.c mxser: use guard()s 2025-08-17 12:46:26 +02:00
n_gsm.c tty: n_gsm: Don't block input queue by waiting MSC 2025-09-06 15:48:49 +02:00
n_hdlc.c tty: add missing MODULE_DESCRIPTION() macros 2024-06-24 16:10:11 +02:00
n_null.c tty: ldops: unify to u8 2023-08-11 21:12:47 +02:00
n_tty.c tty: n_tty: move more_to_be_read to the end of n_tty_read() 2025-03-20 08:00:51 -07:00
nozomi.c tty: nozomi: convert to u8 and size_t 2023-12-08 12:02:38 +01:00
pty.c fsnotify: use accessor to set FMODE_NONOTIFY_* 2025-02-07 10:27:26 +01:00
rpmsg_tty.c tty: make tty_operations::write()'s count size_t 2023-08-11 21:12:46 +02:00
synclink_gt.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
sysrq.c tty: sysrq: delete unnecessary check 2025-08-13 17:42:26 +02:00
tty.h tty: convert THROTTLE constants into enum 2023-10-03 14:31:16 +02:00
tty_audit.c tty: audit: do not use N_TTY_BUF_SIZE 2025-03-20 08:00:50 -07:00
tty_baudrate.c tty: Fix comment style in tty_termios_input_baud_rate() 2022-08-30 14:22:34 +02:00
tty_buffer.c tty: omit need_resched() before cond_resched() 2025-07-16 11:05:34 +02:00
tty_io.c tty: use lock guard()s in tty_io 2025-04-25 13:46:31 +02:00
tty_ioctl.c tty: simplify throttling using guard()s 2025-04-25 13:46:30 +02:00
tty_jobctrl.c tty: tty_jobctrl: fix pid memleak in disassociate_ctty() 2023-09-18 11:14:43 +02:00
tty_ldisc.c tty: add the option to have a tty reject a new ldisc 2024-05-04 18:45:11 +02:00
tty_ldsem.c tty/ldsem: Remove unused ldsem_down_write_trylock 2025-02-04 14:38:42 +01:00
tty_mutex.c tty: remove TTY_MAGIC 2022-09-22 16:12:34 +02:00
tty_port.c tty: tty_port: use guard()s 2025-08-17 12:46:26 +02:00
ttynull.c tty: add missing MODULE_DESCRIPTION() macros 2024-06-24 16:10:11 +02:00
vcc.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00