CVE-2025-71079CWE-667

CVE-2025-71079

Medium · published January 13, 2026

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

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

net: nfc: fix deadlock between nfc_unregister_device and rfkill_fop_write

A deadlock can occur between nfc_unregister_device() and rfkill_fop_write()

due to lock ordering inversion between device_lock and rfkill_global_mutex.

The problematic lock order is:

Thread A (rfkill_fop_write):

rfkill_fop_write()

mutex_lock(&rfkill_global_mutex)

rfkill_set_block()

nfc_rfkill_set_block()

nfc_dev_down()

device_lock(&dev->dev) <- waits for device_lock

Thread B (nfc_unregister_device):

nfc_unregister_device()

device_lock(&dev->dev)

rfkill_unregister()

mutex_lock(&rfkill_global_mutex) <- waits for rfkill_global_mutex

This creates a classic ABBA deadlock scenario.

Fix this by moving rfkill_unregister() and rfkill_destroy() outside the

device_lock critical section. Store the rfkill pointer in a local variable

before releasing the lock, then call rfkill_unregister() after releasing

device_lock.

This change is safe because rfkill_fop_write() holds rfkill_global_mutex

while calling the rfkill callbacks, and rfkill_unregister() also acquires

rfkill_global_mutex before cleanup. Therefore, rfkill_unregister() will

wait for any ongoing callback to complete before proceeding, and

device_del() is only called after rfkill_unregister() returns, preventing

any use-after-free.

The similar lock ordering in nfc_register_device() (device_lock ->

rfkill_global_mutex via rfkill_register) is safe because during

registration the device is not yet in rfkill_list, so no concurrent

rfkill operations can occur on this device.

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.00106 · 1.1th percentile
Weakness
CWE-667 · Improper Locking
Published
2026-01-13T21:16Z
Affected products (20)
ProductVersionsFixed in
linux/linux_kernel≥ 4.4.293, < 4.54.5
linux/linux_kernel≥ 4.9.291, < 4.104.10
linux/linux_kernel≥ 4.14.256, < 4.154.15
linux/linux_kernel≥ 4.19.218, < 4.204.20
linux/linux_kernel≥ 5.4.162, < 5.55.5
linux/linux_kernel≥ 5.10.82, < 5.10.2485.10.248
linux/linux_kernel≥ 5.15.5, < 5.15.1985.15.198
linux/linux_kernel≥ 5.16.1, < 6.1.1606.1.160
linux/linux_kernel≥ 6.2, < 6.6.1206.6.120
linux/linux_kernel≥ 6.7, < 6.12.646.12.64
linux/linux_kernel≥ 6.13, < 6.18.46.18.4
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (9)
EPSS history
Timeline
  • 13 JAN 15:34Z
    net: nfc: fix deadlock between nfc_unregister_device and rfkill_fop_write
    cvelistv5