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

drm/vc4: Disable the V3D interrupt across runtime suspend

vc4_irq_disable() masks the V3D interrupt sources and then calls
synchronize_irq() before the V3D is powered down. However, by itself,
this is not enough to quiesce the interrupt handler.

synchronize_irq() waits for handlers that have already set
IRQD_IRQ_INPROGRESS, and for irqchips reporting IRQCHIP_STATE_ACTIVE.
A GIC interrupt chip is able to mark an interrupt active as soon as a
CPU acknowledges it, so there these checks cover the whole dispatch path.
On RPi 0-3, however, the interrupt controller is ARMCTRL, which has no
active state. A CPU that has read the hwirq out of the pending register
but has not yet reached handle_level_irq() stays invisible to
synchronize_irq().

During a power transition, vc4_irq() may therefore run after the power
domain is off, where every V3D register read will return 0xdeadbeef.
0xdeadbeef has FLDONE, FRDONE and OUTOMEM set. This problem doesn't
trigger NULL pointer dereference issues only because the functions
vc4_irq_finish_bin_job() and vc4_irq_finish_render_job() return early
when there is no job pointer, but OUTOMEM is still able to schedule
vc4_overflow_mem_work() after vc4_irq_disable() has already cancelled it.

Therefore, fix the spurious interrupts by disabling the interrupt line
across the PM transition. To preserve the enable/disable balance, move
vc4_irq_install() and request the IRQ line disabled before the first
runtime resume.
Published: 2026-10-23
Score: 4.7 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service via spurious interrupts
Action: Kernel Update
AI Analysis

Impact

The VC4 driver in the Linux kernel does not fully quiesce V3D interrupt handlers when a runtime suspend occurs. The routine masks interrupt sources and calls synchronize_irq, but on platforms where the interrupt controller is ARMCTRL, active state is not reported. This allows an interrupt handler to run after the GPU power domain is powered off, causing reads of V3D registers to return the sentinel value 0xdeadbeef. The sentinel value triggers overflow workqueue scheduling even though the interrupt line has already been disabled, potentially consuming memory and destabilizing the system. The flaw does not allow direct code execution or privilege escalation, but can lead to resource exhaustion and service interruption.

Affected Systems

The vulnerability resides in the Linux kernel's DRM VC4 driver, which is part of the open-source Linux kernel. It is tied to the ARMCTRL interrupt controller, which is found on Raspberry Pi models such as the RPi 0‑3, but the kernel code itself applies to any Linux kernel using that driver. Thus, any machine running the Linux kernel with the VC4 driver enabled and runtime suspend active may be susceptible, until the vendor releases the patch referenced in the advisory links.

Risk and Exploitability

In the current data, the CVSS score is 4.7, reflecting a moderate level of impact. The EPSS score is less than 1 %, indicating a very low estimated probability of exploitation. The vulnerability is not listed in CISA’s KEV catalog, so no known public exploits exist. The attack would require a local attacker to trigger power‑management transitions on a system that has the VC4 driver enabled. While this does not lead to remote code execution or significant data disclosure, repeated failures can consume memory and potentially cause the system or driver to become unstable, resulting in a denial‑of‑service condition.

Generated by OpenCVE AI on October 29, 2026 at 23:16 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the kernel patch that disables the V3D interrupt line during power‑management transitions (see the commits referenced in the advisory links).
  • If a patch is not yet available, disable runtime suspend for the VC4 subsystem by writing 'on' to /sys/class/drm/card0/device/power/control, keeping the GPU powered during suspend.
  • Enable system logs or monitoring for V3D overflow events; upon detection, reboot or reload the driver to restore normal operation.

Generated by OpenCVE AI on October 29, 2026 at 23:16 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 29 Oct 2026 21:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-665

Thu, 29 Oct 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-821
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.7, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Fri, 23 Oct 2026 18:15:00 +0000

Type Values Removed Values Added
First Time appeared Linux linux
Vendors & Products Linux linux

Fri, 23 Oct 2026 15:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-665

Fri, 23 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: drm/vc4: Disable the V3D interrupt across runtime suspend vc4_irq_disable() masks the V3D interrupt sources and then calls synchronize_irq() before the V3D is powered down. However, by itself, this is not enough to quiesce the interrupt handler. synchronize_irq() waits for handlers that have already set IRQD_IRQ_INPROGRESS, and for irqchips reporting IRQCHIP_STATE_ACTIVE. A GIC interrupt chip is able to mark an interrupt active as soon as a CPU acknowledges it, so there these checks cover the whole dispatch path. On RPi 0-3, however, the interrupt controller is ARMCTRL, which has no active state. A CPU that has read the hwirq out of the pending register but has not yet reached handle_level_irq() stays invisible to synchronize_irq(). During a power transition, vc4_irq() may therefore run after the power domain is off, where every V3D register read will return 0xdeadbeef. 0xdeadbeef has FLDONE, FRDONE and OUTOMEM set. This problem doesn't trigger NULL pointer dereference issues only because the functions vc4_irq_finish_bin_job() and vc4_irq_finish_render_job() return early when there is no job pointer, but OUTOMEM is still able to schedule vc4_overflow_mem_work() after vc4_irq_disable() has already cancelled it. Therefore, fix the spurious interrupts by disabling the interrupt line across the PM transition. To preserve the enable/disable balance, move vc4_irq_install() and request the IRQ line disabled before the first runtime resume.
Title drm/vc4: Disable the V3D interrupt across runtime suspend
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-23T12:19:05.190Z

Reserved: 2026-09-25T10:25:14.381Z

Link: CVE-2026-98946

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-23T13:17:15.650

Modified: 2026-10-23T13:17:15.650

Link: CVE-2026-98946

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-23T12:19:05Z

Links: CVE-2026-98946 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-29T23:30:03Z

Weaknesses
  • CWE-821

    Incorrect Synchronization