CVE-2025-71079
CVE.org · Published
- Record status
- Published
- Identifier year (not publication year)
- 2025
- Source publication
- Source updated
- Imported by cveboard
- Source snapshot
- cve_2026-10-24_midnight_baseline ·
CNA source text (English)
net: nfc: fix deadlock between nfc_unregister_device and rfkill_fop_write
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.
Scoped product and version facts
Fix information unknown; no fixed version is derived here. Missing information does not prove that no fix exists.
Exploitation unknown; this catalogue does not assess exploitation.
Linux
- Vendor
- Linux
- Product
- Linux
- Platforms
- Unknown
- Default status
unaffected
| Version (version) | Status (status) | Version scheme (versionType) | Exclusive end (lessThan) | Inclusive end (lessThanOrEqual) | Status changes (at → status) |
|---|---|---|---|---|---|
| 73a0d12114b4bc1a9def79a623264754b9df698e | affected | git | 2e0831e9fc46a06daa6d4d8d57a2738e343130c3 | Unavailable | None listed |
| 8a9c61c3ef187d8891225f9b932390670a43a0d3 | affected | git | e02a1c33f10a0ed3aba855ab8ae2b6c4c5be8012 | Unavailable | None listed |
| 3e3b5dfcd16a3e254aab61bd1e8c417dd4503102 | affected | git | ee41f4f3ccf8cd6ba3732e867abbec7e6d8d12e5 | Unavailable | None listed |
| 3e3b5dfcd16a3e254aab61bd1e8c417dd4503102 | affected | git | 6b93c8ab6f6cda8818983a4ae3fcf84b023037b4 | Unavailable | None listed |
| 3e3b5dfcd16a3e254aab61bd1e8c417dd4503102 | affected | git | 8fc4632fb508432895430cd02b38086bdd649083 | Unavailable | None listed |
| 3e3b5dfcd16a3e254aab61bd1e8c417dd4503102 | affected | git | f3a8a7c1aa278f2378b2f3a10500c6674dffdfda | Unavailable | None listed |
| 3e3b5dfcd16a3e254aab61bd1e8c417dd4503102 | affected | git | 1ab526d97a57e44d26fadcc0e9adeb9c0c0182f5 | Unavailable | None listed |
| 5ef16d2d172ee56714cff37cd005b98aba08ef5a | affected | git | Unavailable | Unavailable | None listed |
| ff169909eac9e00bf1aa0af739ba6ddfb1b1d135 | affected | git | Unavailable | Unavailable | None listed |
| 47244ac0b65bd74cc70007d8e1bac68bd2baad19 | affected | git | Unavailable | Unavailable | None listed |
| c45cea83e13699bdfd47842e04d09dd43af4c371 | affected | git | Unavailable | Unavailable | None listed |
| 307d2e6cebfca9d92f86c8e2c8e3dd4a8be46ba6 | affected | git | Unavailable | Unavailable | None listed |
| 5.10.82 | affected | semver | 5.10.248 | Unavailable | None listed |
| 5.15.5 | affected | semver | 5.15.198 | Unavailable | None listed |
| 4.4.293 | affected | semver | 4.5 | Unavailable | None listed |
| 4.9.291 | affected | semver | 4.10 | Unavailable | None listed |
| 4.14.256 | affected | semver | 4.15 | Unavailable | None listed |
| 4.19.218 | affected | semver | 4.20 | Unavailable | None listed |
| 5.4.162 | affected | semver | 5.5 | Unavailable | None listed |
Linux
- Vendor
- Linux
- Product
- Linux
- Platforms
- Unknown
- Default status
affected
| Version (version) | Status (status) | Version scheme (versionType) | Exclusive end (lessThan) | Inclusive end (lessThanOrEqual) | Status changes (at → status) |
|---|---|---|---|---|---|
| 5.16 | affected | Unavailable | Unavailable | Unavailable | None listed |
| 0 | unaffected | semver | 5.16 | Unavailable | None listed |
| 5.10.248 | unaffected | semver | Unavailable | 5.10.* | None listed |
| 5.15.198 | unaffected | semver | Unavailable | 5.15.* | None listed |
| 6.1.160 | unaffected | semver | Unavailable | 6.1.* | None listed |
| 6.6.120 | unaffected | semver | Unavailable | 6.6.* | None listed |
| 6.12.64 | unaffected | semver | Unavailable | 6.12.* | None listed |
| 6.18.4 | unaffected | semver | Unavailable | 6.18.* | None listed |
| 6.19 | unaffected | original_commit_for_fix | Unavailable | * | None listed |