CVE-2024-26998

serial: core: Clearing the circular buffer before NULLifying it

published May 1, 2024

CVSS
—
EPSS
0%
Percentile
13.0
In the wild
Unconfirmed
What it is

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

serial: core: Clearing the circular buffer before NULLifying it

The circular buffer is NULLified in uart_tty_port_shutdown()

under the spin lock. However, the PM or other timer based callbacks

may still trigger after this event without knowning that buffer pointer

is not valid. Since the serial code is a bit inconsistent in checking

the buffer state (some rely on the head-tail positions, some on the

buffer pointer), it's better to have both aligned, i.e. buffer pointer

to be NULL and head-tail possitions to be the same, meaning it's empty.

This will prevent asynchronous calls to dereference NULL pointer as

reported recently in 8250 case:

BUG: kernel NULL pointer dereference, address: 00000cf5

Workqueue: pm pm_runtime_work

EIP: serial8250_tx_chars (drivers/tty/serial/8250/8250_port.c:1809)

...

? serial8250_tx_chars (drivers/tty/serial/8250/8250_port.c:1809)

__start_tx (drivers/tty/serial/8250/8250_port.c:1551)

serial8250_start_tx (drivers/tty/serial/8250/8250_port.c:1654)

serial_port_runtime_suspend (include/linux/serial_core.h:667 drivers/tty/serial/serial_port.c:63)

__rpm_callback (drivers/base/power/runtime.c:393)

? serial_port_remove (drivers/tty/serial/serial_port.c:50)

rpm_suspend (drivers/base/power/runtime.c:447)

The proposed change will prevent ->start_tx() to be called during

suspend on shut down port.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00230 · 13.0th percentile
Published
2024-05-01T05:28Z
EPSS history
Timeline
  • 01 MAY 05:28Z
    serial: core: Clearing the circular buffer before NULLifying it
    cvelistv5