CVE-2022-50636

PCI: Fix pci_device_is_present() for VFs by checking PF

published December 9, 2025

CVSS
—
EPSS
0%
Percentile
10.7
In the wild
Unconfirmed
What it is

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

PCI: Fix pci_device_is_present() for VFs by checking PF

pci_device_is_present() previously didn't work for VFs because it reads the

Vendor and Device ID, which are 0xffff for VFs, which looks like they

aren't present. Check the PF instead.

Wei Gong reported that if virtio I/O is in progress when the driver is

unbound or "0" is written to /sys/.../sriov_numvfs, the virtio I/O

operation hangs, which may result in output like this:

task:bash state:D stack: 0 pid: 1773 ppid: 1241 flags:0x00004002

Call Trace:

schedule+0x4f/0xc0

blk_mq_freeze_queue_wait+0x69/0xa0

blk_mq_freeze_queue+0x1b/0x20

blk_cleanup_queue+0x3d/0xd0

virtblk_remove+0x3c/0xb0 [virtio_blk]

virtio_dev_remove+0x4b/0x80

...

device_unregister+0x1b/0x60

unregister_virtio_device+0x18/0x30

virtio_pci_remove+0x41/0x80

pci_device_remove+0x3e/0xb0

This happened because pci_device_is_present(VF) returned "false" in

virtio_pci_remove(), so it called virtio_break_device(). The broken vq

meant that vring_interrupt() skipped the vq.callback() that would have

completed the virtio I/O operation via virtblk_done().

[bhelgaas: commit log, simplify to always use pci_physfn(), add stable tag]

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00210 · 10.7th percentile
Published
2025-12-09T00:00Z
EPSS history
Timeline
  • 09 DEC 00:00Z
    PCI: Fix pci_device_is_present() for VFs by checking PF
    cvelistv5