CVE-2024-26813

vfio/platform: Create persistent IRQ handlers

published April 5, 2024

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

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

vfio/platform: Create persistent IRQ handlers

The vfio-platform SET_IRQS ioctl currently allows loopback triggering of

an interrupt before a signaling eventfd has been configured by the user,

which thereby allows a NULL pointer dereference.

Rather than register the IRQ relative to a valid trigger, register all

IRQs in a disabled state in the device open path. This allows mask

operations on the IRQ to nest within the overall enable state governed

by a valid eventfd signal. This decouples @masked, protected by the

@locked spinlock from @trigger, protected via the @igate mutex.

In doing so, it's guaranteed that changes to @trigger cannot race the

IRQ handlers because the IRQ handler is synchronously disabled before

modifying the trigger, and loopback triggering of the IRQ via ioctl is

safe due to serialization with trigger changes via igate.

For compatibility, request_irq() failures are maintained to be local to

the SET_IRQS ioctl rather than a fatal error in the open device path.

This allows, for example, a userspace driver with polling mode support

to continue to work regardless of moving the request_irq() call site.

This necessarily blocks all SET_IRQS access to the failed index.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00234 · 13.5th percentile
Published
2024-04-05T08:24Z
EPSS history
Timeline
  • 05 APR 08:24Z
    vfio/platform: Create persistent IRQ handlers
    cvelistv5