CVE-2022-49434

PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store()

MEDIUM
5.5
CVSS Score
Published: February 26, 2025 at 02:12 AM UTC
Updated: June 17, 2026 at 05:18 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store() The sysfs sriov_numvfs_store() path acquires the device lock before the config space access lock: sriov_numvfs_store device_lock # A (1) acquire device lock sriov_configure vfio_pci_sriov_configure # (for example) vfio_pci_core_sriov_configure pci_disable_sriov sriov_disable pci_cfg_access_lock pci_wait_cfg # B (4) wait for dev->block_cfg_access == 0 Previously, pci_dev_lock() acquired the config space access lock before the device lock: pci_dev_lock pci_cfg_access_lock dev->block_cfg_access = 1 # B (2) set dev->block_cfg_access = 1 device_lock # A (3) wait for device lock Any path that uses pci_dev_lock(), e.g., pci_reset_function(), may deadlock with sriov_numvfs_store() if the operations occur in the sequence (1) (2) (3) (4). Avoid the deadlock by reversing the order in pci_dev_lock() so it acquires the device lock before the config space access lock, the same as the sriov_numvfs_store() path. [bhelgaas: combined and adapted commit log from Jay Zhou's independent subsequent posting: https://lore.kernel.org/r/[email protected]]

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v < 4.9.3184.10 ≤ v < 4.14.2834.13 ≤ v < 4.14.2834.13 ≤ v < 4.19.2474.13 ≤ v < 5.10.1214.13 ≤ v < 5.15.464.13 ≤ v < 5.17.144.13 ≤ v < 5.18.34.13 ≤ v < 5.194.13 ≤ v < 5.4.1984.15 ≤ v < 4.19.2474.20 ≤ v < 5.4.1985.11 ≤ v < 5.15.465.16 ≤ v < 5.17.145.18 ≤ v < 5.18.35.5 ≤ v < 5.10.12117530e71e0166a37f8e20a9b7bcf1d50ae3cff8e4.13
Vendor states this is fixed in 2cdd5284035322795b0964f899eefba254cfe483 (fixed)
Vendor states this is fixed in 59ea6b3ae51df7cd6bfd84c9c0030609b9315622 (fixed)
Vendor states this is fixed in a91ee0e9fca9d7501286cfbced9b30a33e52740a (fixed)
Vendor states this is fixed in aed6d4d519210c28817948f34c53b6e058e0456c (fixed)
Vendor states this is fixed in c3c6dc1853b8bf3c718f96fd8480a6eb09ba4831 (fixed)
Vendor states this is fixed in c9a81f9ed6ae3554621d6a50220b1bc74b67d81e (fixed)
Vendor states this is fixed in ea047f51172aa68841adef7f52d375002438b8f0 (fixed)
Vendor states this is fixed in eff3587b9c01439b738298475e555c028ac9f55e (fixed)
Vendor states this is fixed in 4.13 (unaffected)
Vendor states this is fixed in 4.14.283 (unaffected)
Vendor states this is fixed in 4.19.247 (unaffected)
Vendor states this is fixed in 5.10.121 (unaffected)
Vendor states this is fixed in 5.15.46 (unaffected)
Vendor states this is fixed in 5.17.14 (unaffected)
Vendor states this is fixed in 5.18.3 (unaffected)
Vendor states this is fixed in 5.19 (unaffected)
Vendor states this is fixed in 5.4.198 (unaffected)

References (9)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/2cdd5284035322795b0964f899eefba254cfe483
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/59ea6b3ae51df7cd6bfd84c9c0030609b9315622
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/a91ee0e9fca9d7501286cfbced9b30a33e52740a
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/aed6d4d519210c28817948f34c53b6e058e0456c
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/c3c6dc1853b8bf3c718f96fd8480a6eb09ba4831
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/c9a81f9ed6ae3554621d6a50220b1bc74b67d81e
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/ea047f51172aa68841adef7f52d375002438b8f0

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-667

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card