CVE-2025-39994

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

State
Published
Severity
7.3 High
Published
Oct 15, 2025
Updated
Oct 15, 2026
Reserved
Apr 16, 2025

Read the record on cve.org

Description

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]

Scores

CVSSScoreVectorSource
3.17.3 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • f7a27ff1fb77e114d1059a5eb2ed1cffdc508ce8 to before bc4ffd962ce16a154c44c68853b9d93f5b6fc4b8Affected
  • f7a27ff1fb77e114d1059a5eb2ed1cffdc508ce8 to before e2f5eaafc0306a76fb1cb760aae804b065b8a341Affected
  • f7a27ff1fb77e114d1059a5eb2ed1cffdc508ce8 to before 3f876cd47ed8bca1e28d68435845949f51f90703Affected
  • f7a27ff1fb77e114d1059a5eb2ed1cffdc508ce8 to before df0303b4839520b84d9367c2fad65b13650a4d42Affected
  • f7a27ff1fb77e114d1059a5eb2ed1cffdc508ce8 to before 71ed8b81a4906cb785966910f39cf7f5ad60a69eAffected
  • f7a27ff1fb77e114d1059a5eb2ed1cffdc508ce8 to before effb1c19583bca7022fa641a70766de45c6d41acAffected
  • f7a27ff1fb77e114d1059a5eb2ed1cffdc508ce8 to before 9a00de20ed8ba90888479749b87bc1532cded4ceAffected
  • f7a27ff1fb77e114d1059a5eb2ed1cffdc508ce8 to before 4266f012806fc18e46da4a04d130df59a4946f93Affected
  • f7a27ff1fb77e114d1059a5eb2ed1cffdc508ce8 to before 40b7a19f321e65789612ebaca966472055dab48cAffected
LinuxLinux
  • 3.16Affected
  • before 3.16Not affected
  • 5.4.301 through 5.4.*Not affected
  • 5.10.246 through 5.10.*Not affected
  • 5.15.195 through 5.15.*Not affected
  • 6.1.156 through 6.1.*Not affected
  • 6.6.111 through 6.6.*Not affected
  • 6.12.51 through 6.12.*Not affected
  • 6.16.11 through 6.16.*Not affected
  • 6.17.1 through 6.17.*Not affected
  • 6.18 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.