CVE-2025-23161

PCI: vmd: Make vmd_dev::cfg_lock a raw_spinlock_t type

published May 1, 2025

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

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

PCI: vmd: Make vmd_dev::cfg_lock a raw_spinlock_t type

The access to the PCI config space via pci_ops::read and pci_ops::write is

a low-level hardware access. The functions can be accessed with disabled

interrupts even on PREEMPT_RT. The pci_lock is a raw_spinlock_t for this

purpose.

A spinlock_t becomes a sleeping lock on PREEMPT_RT, so it cannot be

acquired with disabled interrupts. The vmd_dev::cfg_lock is accessed in

the same context as the pci_lock.

Make vmd_dev::cfg_lock a raw_spinlock_t type so it can be used with

interrupts disabled.

This was reported as:

BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48

Call Trace:

rt_spin_lock+0x4e/0x130

vmd_pci_read+0x8d/0x100 [vmd]

pci_user_read_config_byte+0x6f/0xe0

pci_read_config+0xfe/0x290

sysfs_kf_bin_read+0x68/0x90

[bigeasy: reword commit message]

Tested-off-by: Luis Claudio R. Goncalves <[email protected]>

[kwilczynski: commit log]

[bhelgaas: add back report info from

https://lore.kernel.org/lkml/[email protected]/]

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00150 · 3.8th percentile
Published
2025-05-01T12:55Z
EPSS history
Timeline
  • 01 MAY 12:55Z
    PCI: vmd: Make vmd_dev::cfg_lock a raw_spinlock_t type
    cvelistv5