Skip to content
Heist/ feed
Unrated

net: nfc: fix deadlock between nfc_unregister_device and rfkill_fop_write

Type: advisorySource: Official CVE List1 source record

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 ye

Announced Source revision 1
Original source ↗

CVE-2025-71079

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: cve:CVE-2025-71079

Linux

Source reference: /containers/cna/affected/0/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Linux

Source reference: /containers/cna/affected/1/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "vendor": "Linux",
    "product": "Linux",
    "versions": [
      {
        "status": "affected",
        "version": "73a0d12114b4bc1a9def79a623264754b9df698e",
        "lessThan": "2e0831e9fc46a06daa6d4d8d57a2738e343130c3",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "8a9c61c3ef187d8891225f9b932390670a43a0d3",
        "lessThan": "e02a1c33f10a0ed3aba855ab8ae2b6c4c5be8012",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "3e3b5dfcd16a3e254aab61bd1e8c417dd4503102",
        "lessThan": "ee41f4f3ccf8cd6ba3732e867abbec7e6d8d12e5",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "3e3b5dfcd16a3e254aab61bd1e8c417dd4503102",
        "lessThan": "6b93c8ab6f6cda8818983a4ae3fcf84b023037b4",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "3e3b5dfcd16a3e254aab61bd1e8c417dd4503102",
        "lessThan": "8fc4632fb508432895430cd02b38086bdd649083",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "3e3b5dfcd16a3e254aab61bd1e8c417dd4503102",
        "lessThan": "f3a8a7c1aa278f2378b2f3a10500c6674dffdfda",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "3e3b5dfcd16a3e254aab61bd1e8c417dd4503102",
        "lessThan": "1ab526d97a57e44d26fadcc0e9adeb9c0c0182f5",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "5ef16d2d172ee56714cff37cd005b98aba08ef5a",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "ff169909eac9e00bf1aa0af739ba6ddfb1b1d135",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "47244ac0b65bd74cc70007d8e1bac68bd2baad19",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "c45cea83e13699bdfd47842e04d09dd43af4c371",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "307d2e6cebfca9d92f86c8e2c8e3dd4a8be46ba6",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "5.10.82",
        "lessThan": "5.10.248",
        "versionType": "semver"
      },
      {
        "status": "affected",
        "version": "5.15.5",
        "lessThan": "5.15.198",
        "versionType": "semver"
      },
      {
        "status": "affected",
        "version": "4.4.293",
        "lessThan": "4.5",
        "versionType": "semver"
      },
      {
        "status": "affected",
        "version": "4.9.291",
        "lessThan": "4.10",
        "versionType": "semver"
      },
      {
        "status": "affected",
        "version": "4.14.256",
        "lessThan": "4.15",
        "versionType": "semver"
      },
      {
        "status": "affected",
        "version": "4.19.218",
        "lessThan": "4.20",
        "versionType": "semver"
      },
      {
        "status": "affected",
        "version": "5.4.162",
        "lessThan": "5.5",
        "versionType": "semver"
      }
    ],
    "programFiles": [
      "net/nfc/core.c"
    ],
    "defaultStatus": "unaffected"
  },
  {
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "vendor": "Linux",
    "product": "Linux",
    "versions": [
      {
        "status": "affected",
        "version": "5.16"
      },
      {
        "status": "unaffected",
        "version": "0",
        "lessThan": "5.16",
        "versionType": "semver"
      },
      {
        "status": "unaffected",
        "version": "5.10.248",
        "versionType": "semver",
        "lessThanOrEqual": "5.10.*"
      },
      {
        "status": "unaffected",
        "version": "5.15.198",
        "versionType": "semver",
        "lessThanOrEqual": "5.15.*"
      },
      {
        "status": "unaffected",
        "version": "6.1.160",
        "versionType": "semver",
        "lessThanOrEqual": "6.1.*"
      },
      {
        "status": "unaffected",
        "version": "6.6.120",
        "versionType": "semver",
        "lessThanOrEqual": "6.6.*"
      },
      {
        "status": "unaffected",
        "version": "6.12.64",
        "versionType": "semver",
        "lessThanOrEqual": "6.12.*"
      },
      {
        "status": "unaffected",
        "version": "6.18.4",
        "versionType": "semver",
        "lessThanOrEqual": "6.18.*"
      },
      {
        "status": "unaffected",
        "version": "6.19",
        "versionType": "original_commit_for_fix",
        "lessThanOrEqual": "*"
      }
    ],
    "programFiles": [
      "net/nfc/core.c"
    ],
    "defaultStatus": "affected"
  }
]
Related CVEs
CVE-2025-71079

Source reference: /cveMetadata/cveId

Publisher severity

No explicit severity was provided.

Event
#27138 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement