CVE-2025-39994

CVE-2025-39994

High · published October 15, 2025

CVSS v3.1
7.3
EPSS
0%
Percentile
4.3
In the wild
Unconfirmed
What it is

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

media: tuner: xc5000: Fix use-after-free in xc5000_release

The original code uses cancel_delayed_work() in xc5000_release(), which

does not guarantee that the delayed work item timer_sleep has fully

completed if it was already running. This leads to use-after-free scenarios

where xc5000_release() may free the xc5000_priv while timer_sleep is still

active and attempts to dereference the xc5000_priv.

A typical race condition is illustrated below:

CPU 0 (release thread) | CPU 1 (delayed work callback)

xc5000_release() | xc5000_do_timer_sleep()

cancel_delayed_work() |

hybrid_tuner_release_state(priv) |

kfree(priv) |

| priv = container_of() // UAF

Replace cancel_delayed_work() with cancel_delayed_work_sync() to ensure

that the timer_sleep is properly canceled before the xc5000_priv memory

is deallocated.

A deadlock concern was considered: xc5000_release() is called in a process

context and is not holding any locks that the timer_sleep work item might

also need. Therefore, the use of the _sync() variant is safe here.

This bug was initially identified through static analysis.

[hverkuil: fix typo in Subject: tunner -> tuner]

The record
Technical detail
CVSS v3.1
7.3 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00155 · 4.3th percentile
Published
2025-10-15T12:15Z
References (9)
EPSS history
Timeline
  • 15 OCT 07:58Z
    media: tuner: xc5000: Fix use-after-free in xc5000_release
    cvelistv5