CVE-2026-43211 (GCVE-0-2026-43211)
Vulnerability from cvelistv5
Published
2026-05-06 11:28
Modified
2026-08-05 12:26
Summary
In the Linux kernel, the following vulnerability has been resolved: PCI: Fix pci_slot_trylock() error handling Commit a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()") delegates the bridge device's pci_dev_trylock() to pci_bus_trylock() in pci_slot_trylock(), but it forgets to remove the corresponding pci_dev_unlock() when pci_bus_trylock() fails. Before a4e772898f8b, the code did: if (!pci_dev_trylock(dev)) /* <- lock bridge device */ goto unlock; if (dev->subordinate) { if (!pci_bus_trylock(dev->subordinate)) { pci_dev_unlock(dev); /* <- unlock bridge device */ goto unlock; } } After a4e772898f8b the bridge-device lock is no longer taken, but the pci_dev_unlock(dev) on the failure path was left in place, leading to the bug. This yields one of two errors: 1. A warning that the lock is being unlocked when no one holds it. 2. An incorrect unlock of a lock that belongs to another thread. Fix it by removing the now-redundant pci_dev_unlock(dev) on the failure path. [Same patch later posted by Keith at https://patch.msgid.link/20260116184150.3013258-1-kbusch@meta.com]
Impacted products
Vendor Product Version
Linux Linux Version: e2355d513b89a2cb511b4ded0deb426cdb01acd0
Version: 04e85a3285b0e5c5af6fd2c0fd6e95ffecc01945
Version: 7253b4fed46471cc247c6cacefac890a8472c083
Version: 78c6e39fef5c428960aff742149bba302dd46f5a
Version: a4e772898f8bf2e7e1cf661a12c60a5612c4afab
Version: a4e772898f8bf2e7e1cf661a12c60a5612c4afab
Version: a4e772898f8bf2e7e1cf661a12c60a5612c4afab
Version: a4e772898f8bf2e7e1cf661a12c60a5612c4afab
Version: 0790b89c7e911003b8c50ae50e3ac7645de1fae9
Version: df77a678c33871a6e4ac5b54a71662f1d702335b
Version: 81c68e218ab883dfa368460a59b674084c0240da
Version: 5.10.226   
Version: 5.15.167   
Version: 6.1.110   
Version: 6.6.51   
Version: 4.19.322   
Version: 5.4.284   
Version: 6.10.10   
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/pci/pci.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "ebb27b7399ab8b9eb1f792b329aa5f6250c590d4",
              "status": "affected",
              "version": "e2355d513b89a2cb511b4ded0deb426cdb01acd0",
              "versionType": "git"
            },
            {
              "lessThan": "fbe06a3058114bf95a17a4941b205f4b321c6f0a",
              "status": "affected",
              "version": "04e85a3285b0e5c5af6fd2c0fd6e95ffecc01945",
              "versionType": "git"
            },
            {
              "lessThan": "943ed56606a7ab2fe5a99cad572dd17d484310c7",
              "status": "affected",
              "version": "7253b4fed46471cc247c6cacefac890a8472c083",
              "versionType": "git"
            },
            {
              "lessThan": "a19b61fdb958ffadbba85b43c991eb9fc70c1c1c",
              "status": "affected",
              "version": "78c6e39fef5c428960aff742149bba302dd46f5a",
              "versionType": "git"
            },
            {
              "lessThan": "0425aaf20b407d2f2cf3bf469808e4a35f9abb8b",
              "status": "affected",
              "version": "a4e772898f8bf2e7e1cf661a12c60a5612c4afab",
              "versionType": "git"
            },
            {
              "lessThan": "bd435f4b738130d732ef64e0e57e45185f77165d",
              "status": "affected",
              "version": "a4e772898f8bf2e7e1cf661a12c60a5612c4afab",
              "versionType": "git"
            },
            {
              "lessThan": "8b08ea9690b212b7bf7f12414039259cf34b1aa0",
              "status": "affected",
              "version": "a4e772898f8bf2e7e1cf661a12c60a5612c4afab",
              "versionType": "git"
            },
            {
              "lessThan": "9368d1ee62829b08aa31836b3ca003803caf0b72",
              "status": "affected",
              "version": "a4e772898f8bf2e7e1cf661a12c60a5612c4afab",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "0790b89c7e911003b8c50ae50e3ac7645de1fae9",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "df77a678c33871a6e4ac5b54a71662f1d702335b",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "81c68e218ab883dfa368460a59b674084c0240da",
              "versionType": "git"
            },
            {
              "lessThan": "5.10.252",
              "status": "affected",
              "version": "5.10.226",
              "versionType": "semver"
            },
            {
              "lessThan": "5.15.202",
              "status": "affected",
              "version": "5.15.167",
              "versionType": "semver"
            },
            {
              "lessThan": "6.1.165",
              "status": "affected",
              "version": "6.1.110",
              "versionType": "semver"
            },
            {
              "lessThan": "6.6.128",
              "status": "affected",
              "version": "6.6.51",
              "versionType": "semver"
            },
            {
              "lessThan": "4.20",
              "status": "affected",
              "version": "4.19.322",
              "versionType": "semver"
            },
            {
              "lessThan": "5.5",
              "status": "affected",
              "version": "5.4.284",
              "versionType": "semver"
            },
            {
              "lessThan": "6.11",
              "status": "affected",
              "version": "6.10.10",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/pci/pci.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.11"
            },
            {
              "lessThan": "6.11",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.252",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.202",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.165",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.128",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.75",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.16",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.19.*",
              "status": "unaffected",
              "version": "6.19.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.0",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.252",
                  "versionStartIncluding": "5.10.226",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.202",
                  "versionStartIncluding": "5.15.167",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.165",
                  "versionStartIncluding": "6.1.110",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.128",
                  "versionStartIncluding": "6.6.51",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.75",
                  "versionStartIncluding": "6.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.16",
                  "versionStartIncluding": "6.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19.6",
                  "versionStartIncluding": "6.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0",
                  "versionStartIncluding": "6.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.19.322",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.4.284",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "6.10.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nPCI: Fix pci_slot_trylock() error handling\n\nCommit a4e772898f8b (\"PCI: Add missing bridge lock to pci_bus_lock()\")\ndelegates the bridge device\u0027s pci_dev_trylock() to pci_bus_trylock() in\npci_slot_trylock(), but it forgets to remove the corresponding\npci_dev_unlock() when pci_bus_trylock() fails.\n\nBefore a4e772898f8b, the code did:\n\n  if (!pci_dev_trylock(dev)) /* \u003c- lock bridge device */\n    goto unlock;\n  if (dev-\u003esubordinate) {\n    if (!pci_bus_trylock(dev-\u003esubordinate)) {\n      pci_dev_unlock(dev);   /* \u003c- unlock bridge device */\n      goto unlock;\n    }\n  }\n\nAfter a4e772898f8b the bridge-device lock is no longer taken, but the\npci_dev_unlock(dev) on the failure path was left in place, leading to the\nbug.\n\nThis yields one of two errors:\n\n  1. A warning that the lock is being unlocked when no one holds it.\n  2. An incorrect unlock of a lock that belongs to another thread.\n\nFix it by removing the now-redundant pci_dev_unlock(dev) on the failure\npath.\n\n[Same patch later posted by Keith at\nhttps://patch.msgid.link/20260116184150.3013258-1-kbusch@meta.com]"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable path is reached through local PCI reset interfaces, most plausibly VFIO PCI hot reset on an assigned device or privileged PCI reset paths. It is not exposed through network packet processing or an adjacent/physical protocol parser.\nAC:L - The failure path requires lock contention, but a local attacker with access to reset-capable PCI interfaces can create concurrent reset/config-lock activity with repeated attempts. Under the required higher-severity rule, this is treated as attacker-controlled race complexity.\nPR:L - Although some sysfs PCI reset paths require real administrative control, VFIO PCI device access can be delegated to a non-root local user or VM management process without CAP_SYS_ADMIN in the vulnerable ioctl path. Therefore the highest defensible scenario is low privileges rather than high.\nUI:N - Once the attacker has access to the local PCI/VFIO reset interface, exploitation only requires issuing concurrent operations. No separate victim user action is needed.\nS:U - The bug corrupts kernel PCI locking state within the same host kernel security authority. This is treated as standard local kernel compromise/DoS rather than a demonstrated cross-scope escape.\nC:H - The incorrect unlock can release a PCI device/config-access lock held by another thread, breaking kernel mutual exclusion during reset and driver callbacks. Given the possibility of repeated controlled races and kernel state corruption, confidentiality impact is scored high under the higher-severity rule.\nI:H - Incorrectly unlocking another thread\u0027s PCI device lock can allow concurrent modification of PCI device, driver, and reset state while code assumes exclusive access. This can plausibly lead to kernel state corruption or control-flow-relevant corruption, so integrity is high.\nA:H - The documented immediate outcomes include WARN conditions and invalid lock ownership/unlock behavior, which can oops, panic, deadlock, or destabilize PCI reset paths. Repeated triggering can cause host kernel availability loss."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:26:36.454Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/ebb27b7399ab8b9eb1f792b329aa5f6250c590d4"
        },
        {
          "url": "https://git.kernel.org/stable/c/fbe06a3058114bf95a17a4941b205f4b321c6f0a"
        },
        {
          "url": "https://git.kernel.org/stable/c/943ed56606a7ab2fe5a99cad572dd17d484310c7"
        },
        {
          "url": "https://git.kernel.org/stable/c/a19b61fdb958ffadbba85b43c991eb9fc70c1c1c"
        },
        {
          "url": "https://git.kernel.org/stable/c/0425aaf20b407d2f2cf3bf469808e4a35f9abb8b"
        },
        {
          "url": "https://git.kernel.org/stable/c/bd435f4b738130d732ef64e0e57e45185f77165d"
        },
        {
          "url": "https://git.kernel.org/stable/c/8b08ea9690b212b7bf7f12414039259cf34b1aa0"
        },
        {
          "url": "https://git.kernel.org/stable/c/9368d1ee62829b08aa31836b3ca003803caf0b72"
        }
      ],
      "title": "PCI: Fix pci_slot_trylock() error handling",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-43211",
    "datePublished": "2026-05-06T11:28:14.423Z",
    "dateReserved": "2026-05-01T14:12:55.993Z",
    "dateUpdated": "2026-08-05T12:26:36.454Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…