CVE-2026-64528: tty: serial: samsung: Remove redundant port lock acquisition in rx helpers

Greg Kroah-Hartman <[email protected]> Sat, 25 Jul 2026 11:19:38 +0200
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026072534-CVE-2026-64528-0157@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

tty: serial: samsung: Remove redundant port lock acquisition in rx helpers

Sashiko identified a deadlock when the console flow is engaged [1].

When console flow control is enabled (UPF_CONS_FLOW),
s3c24xx_serial_stop_tx() calls s3c24xx_serial_rx_enable() and
s3c24xx_serial_start_tx() calls s3c24xx_serial_rx_disable().

The serial core framework invokes the .stop_tx() and .start_tx()
callbacks with the port->lock spinlock already held. Furthermore, all
internal driver paths that invoke stop_tx (such as the DMA TX
completion handler s3c24xx_serial_tx_dma_complete() or the PIO TX IRQ
handler s3c24xx_serial_tx_irq()) also acquire port->lock prior to
calling it. (Note that s3c24xx_serial_start_tx() is only invoked by the
serial core).

However, s3c24xx_serial_rx_enable() and s3c24xx_serial_rx_disable()
unconditionally attempt to acquire port->lock again using
uart_port_lock_irqsave(). Since spinlocks are not recursive, this
causes a deadlock on the same CPU when console flow control is engaged.

Remove the redundant lock acquisition from both rx helper functions.

The Linux kernel CVE team has assigned CVE-2026-64528 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 2.6.27 with commit b497549a035c2a81b71c7a27f2b00c8a16c09423 and fixed in 5.10.259 with commit ee9eb72be95490602c493db050c73d925c3a4d74
	Issue introduced in 2.6.27 with commit b497549a035c2a81b71c7a27f2b00c8a16c09423 and fixed in 5.15.210 with commit 10014eb7eee351f7b587f8ac85830f0c9343cb9a
	Issue introduced in 2.6.27 with commit b497549a035c2a81b71c7a27f2b00c8a16c09423 and fixed in 6.1.176 with commit f4c3e63fa8639aedf96fb200d9939945a9eed51e
	Issue introduced in 2.6.27 with commit b497549a035c2a81b71c7a27f2b00c8a16c09423 and fixed in 6.6.143 with commit a9c22e0f93ba18322a6623ecdda2f0cd858ca350
	Issue introduced in 2.6.27 with commit b497549a035c2a81b71c7a27f2b00c8a16c09423 and fixed in 6.12.93 with commit 14143ec10d69f42806b5d7b046f0fd1b835831ae
	Issue introduced in 2.6.27 with commit b497549a035c2a81b71c7a27f2b00c8a16c09423 and fixed in 6.18.35 with commit 9fd48937046efc9abb89379d63ee9cc5c661d711
	Issue introduced in 2.6.27 with commit b497549a035c2a81b71c7a27f2b00c8a16c09423 and fixed in 7.0.12 with commit 9c92b42207978559e32903c3098aaf5c5b5788b2
	Issue introduced in 2.6.27 with commit b497549a035c2a81b71c7a27f2b00c8a16c09423 and fixed in 7.1 with commit a3bb136bff5e6a5e48cdd813246c9c4686feaaa9

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64528
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/tty/serial/samsung_tty.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/ee9eb72be95490602c493db050c73d925c3a4d74
	https://git.kernel.org/stable/c/10014eb7eee351f7b587f8ac85830f0c9343cb9a
	https://git.kernel.org/stable/c/f4c3e63fa8639aedf96fb200d9939945a9eed51e
	https://git.kernel.org/stable/c/a9c22e0f93ba18322a6623ecdda2f0cd858ca350
	https://git.kernel.org/stable/c/14143ec10d69f42806b5d7b046f0fd1b835831ae
	https://git.kernel.org/stable/c/9fd48937046efc9abb89379d63ee9cc5c661d711
	https://git.kernel.org/stable/c/9c92b42207978559e32903c3098aaf5c5b5788b2
	https://git.kernel.org/stable/c/a3bb136bff5e6a5e48cdd813246c9c4686feaaa9