Vulnocalypse
Back to feed
22Track

PCI/PM: Drain runtime-idle callbacks before driver removal

Linux kernel · CVE-2024-35809
0 news outlets1 CERTs and agencies0 researchers

Assessment: Track

SSVC decision points: exploitation none, automatable no, technical impact partial, deployment high.

What is it?

In the Linux kernel, the following vulnerability has been resolved: PCI/PM: Drain runtime-idle callbacks before driver removal A race condition between the .runtime_idle() callback and the .remove() callback in the rtsx_pcr PCI driver leads to a kernel crash due to an unhandled page fault [1]. The problem is that rtsx_pci_runtime_idle() is not expected to be running after pm_runtime_get_sync() has been called, but the latter doesn't really guarantee that. It only guarantees that the suspend and resume callbacks will not be running when it returns. However, if a .runtime_idle() callback is already running when pm_runtime_get_sync() is called, the latter will notice that the runtime PM status of the device is RPM_ACTIVE and it will return right away without waiting for the former to complete. In fact, it cannot wait for .runtime_idle() to complete because it may be called from that callback (it arguably does not make much sense to do that, but it is not strictly prohibited). Thus in general, whoever is providing a .runtime_idle() callback needs to protect it from running in parallel with whatever code runs after pm_runtime_get_sync(). [Note that .runtime_idle() will not start

Evidence

Official warnings1National CERTs, government cyber security agencies and the vendor’s own advisories

Exploitation

  • Public proof of concept
  • Exploited in the wild
  • Listed as known exploited
CVSS
5.5
EPSS
0.2%
First seen
1 d ago
Status
confirmed

All Linux vulnerabilities