CVE-2022-49304

drivers: tty: serial: Fix deadlock in sa1100_set_termios()

Medium · published February 26, 2025

CVSS v3.1
5.5
EPSS
0%
Percentile
9.8
In the wild
Unconfirmed
What it is

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

drivers: tty: serial: Fix deadlock in sa1100_set_termios()

There is a deadlock in sa1100_set_termios(), which is shown

below:

(Thread 1) | (Thread 2)

| sa1100_enable_ms()

sa1100_set_termios() | mod_timer()

spin_lock_irqsave() //(1) | (wait a time)

... | sa1100_timeout()

del_timer_sync() | spin_lock_irqsave() //(2)

(wait timer to stop) | ...

We hold sport->port.lock in position (1) of thread 1 and

use del_timer_sync() to wait timer to stop, but timer handler

also need sport->port.lock in position (2) of thread 2. As a result,

sa1100_set_termios() will block forever.

This patch moves del_timer_sync() before spin_lock_irqsave()

in order to prevent the deadlock.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00203 · 9.8th percentile
Published
2025-02-26T02:10Z
EPSS history
Timeline
  • 26 FEB 02:10Z
    drivers: tty: serial: Fix deadlock in sa1100_set_termios()
    cvelistv5