Cloudanix VulnDB

CVE-2026-31540

Medium · 5.5

CVSS

5.5

EPSS

0.2%

Published

Apr 24, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

Some Linux systems with Intel graphics can crash when going to sleep if certain graphics firmware is missing, causing an outage until the machine recovers or is restarted.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
OS kernel
Class
Denial of service
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

This flaw is a NULL function-pointer dereference in the Linux kernel i915 DRM graphics driver. When required i915 firmware binaries are absent, the driver may leave the set_default_submission callback unset, but the suspend path can still call it during late power-management handling. A local, low-privileged user who can cause or influence system suspend on an affected host may trigger a kernel oops or panic, resulting in loss of system availability. The CVSS vector indicates local attack requirements, low attack complexity, low privileges, no user interaction, and high availability impact, with no expected confidentiality or integrity impact.

Why it matters to the business

Affected Linux systems using Intel i915 graphics can crash or become unavailable during suspend/resume workflows if the vulnerable driver path is reached, potentially disrupting laptops, workstations, kiosks, edge devices, and servers with Intel graphics enabled. The currently low EPSS score, flat EPSS trend, absence from CISA KEV, and no reported exploit maturity suggest broad emergency response is not warranted, but organizations should still address it through normal kernel maintenance because it can cause operational outages and may affect systems that rely on power-management automation.

How an attack unfolds

An attacker first needs local access with enough privilege to trigger or request a suspend operation, or access to a local workflow that causes the system to enter suspend. On a vulnerable kernel where the i915 driver is loaded and the relevant i915 firmware binaries are missing or unavailable, the suspend sequence reaches the i915 late suspend path. The driver attempts to reset default submission state by dereferencing set_default_submission even though it was never initialized. This causes a NULL pointer dereference in kernel context, producing an oops or panic depending on kernel configuration, and the system may hang, reboot, or become unavailable until manually recovered. There is no indication from the supplied data that this flaw enables code execution, privilege escalation, data theft, ransomware activity, or remote exploitation.

How to fix it

Upgrade to a Linux kernel build that includes the upstream fix for the i915 driver change described as checking set_default_submission before dereferencing it, associated with commit daa199abc3d3d1740c9e3a2c3e9216ae5b447cad or the corresponding stable/vendor backport. Because no exact fixed package versions were provided, use the fixed kernel versions published by the relevant Linux distribution or hardware vendor. As interim mitigations, ensure the appropriate i915 firmware packages are installed and available in the initramfs where applicable, avoid enabling suspend on affected systems where availability is critical, disable or restrict untrusted local users from initiating suspend, and consider disabling the i915 driver only where operationally acceptable and tested.

How to confirm the fix worked

Confirm the running kernel version has the vendor backport or upstream fix by checking the distribution security advisory, kernel changelog, or source package for the i915 change that guards set_default_submission before use. Validate that systems no longer reproduce the crash by testing suspend/resume on representative hardware with the i915 driver loaded and expected firmware packaging conditions. Confirm required i915 firmware files are installed and included in boot images where applicable. Review kernel logs after suspend/resume tests for absence of NULL pointer dereference, i915 suspend, or intel_engines_reset_default_submission crash traces. For fleet validation, inventory Linux hosts using the i915 module and compare running kernel package versions against the vendor-fixed baseline.

Typical attack path

  1. Obtain local access to an affected Linux system with Intel i915 graphics driver support enabled.
  2. Confirm or rely on a condition where the i915 firmware binaries are missing, unavailable, or not loaded as expected.
  3. Trigger a suspend/deep-sleep transition through local power-management interfaces, desktop controls, system utilities, or automation.
  4. During late suspend, cause the i915 driver to execute the vulnerable path that calls an unset set_default_submission function pointer.
  5. Induce a kernel oops or panic, making the host unavailable until it recovers, reboots, or is manually serviced.

How to detect it

To determine whether this issue has already been triggered, review kernel logs, persistent journal entries, crash dumps, and system reboot records for i915 crashes during suspend or deep-sleep transitions. Useful sources include dmesg output, /var/log/kern.log, /var/log/messages, /var/log/syslog, systemd-journald kernel logs, pstore/ramoops records, kdump/vmcore artifacts, and endpoint crash telemetry. Focus on events shortly before unexpected reboots, hangs, failed suspend attempts, or user reports of systems crashing when entering sleep. Look for NULL pointer dereference messages with call traces involving intel_engines_reset_default_submission, gt_sanitize, i915_gem_suspend_late, or i915_drm_suspend_late. Also look for preceding i915 firmware load failures, as the vulnerable path is associated with missing i915 firmware binaries. These indicators show the vulnerability condition was exercised, but by themselves may not prove malicious intent because normal suspend behavior can trigger the crash on misconfigured or affected systems.

  • BUG: kernel NULL pointer dereference, address: 0000000000000000
  • #PF: supervisor instruction fetch in kernel mode
  • RIP: 0010:0x0
  • intel_engines_reset_default_submission+0x42/0x60
  • __intel_gt_unset_wedged+0x191/0x200
  • intel_gt_unset_wedged+0x20/0x40
  • gt_sanitize+0x15e/0x170
  • i915_gem_suspend_late+0x6b/0x180
  • i915_drm_suspend_late+0x35/0xf0
  • Workqueue: async async_run_entry_fn
  • PM: suspend entry (deep)
  • Oops: Oops: 0010
  • CR2: 0000000000000000
  • Modules linked in:
  • i915
  • firmware: failed to load i915/

What your security team should do

  • Prioritize patching affected Linux endpoints and systems that use Intel i915 graphics and rely on suspend/resume or unattended power-management workflows.
  • Track vendor kernel advisories and deploy the first stable or distribution-supported kernel containing the i915 set_default_submission NULL dereference fix.
  • Inventory systems with the i915 module loaded and identify those missing relevant i915 firmware packages or generating firmware-load failures.
  • For high-availability or unattended systems, temporarily disable suspend or restrict local suspend initiation until patched.
  • Monitor kernel logs and crash reporting for i915-related oops, panic, and suspend-late failures to identify potentially impacted systems.
  • Treat observed exploitation primarily as a local denial-of-service event unless additional evidence indicates a separate compromise path.
  • Because EPSS is low, flat over 30 days, and the issue is not in KEV, handle through standard vulnerability management SLAs rather than emergency internet-facing exposure response.

The record

In the Linux kernel, the following vulnerability has been resolved: drm/i915/gt: Check set_default_submission() before deferencing When the i915 driver firmware binaries are not present, the set_default_submission pointer is not set. This pointer is dereferenced during suspend anyways. Add a check to make sure it is set before dereferencing. [ 23.289926] PM: suspend entry (deep) [ 23.293558] Filesystems sync: 0.000 seconds [ 23.298010] Freezing user space processes [ 23.302771] Freezing user space processes completed (elapsed 0.000 seconds) [ 23.309766] OOM killer disabled. [ 23.313027] Freezing remaining freezable tasks [ 23.318540] Freezing remaining freezable tasks completed (elapsed 0.001 seconds) [ 23.342038] serial 00:05: disabled [ 23.345719] serial 00:02: disabled [ 23.349342] serial 00:01: disabled [ 23.353782] sd 0:0:0:0: [sda] Synchronizing SCSI cache [ 23.358993] sd 1:0:0:0: [sdb] Synchronizing SCSI cache [ 23.361635] ata1.00: Entering standby power mode [ 23.368863] ata2.00: Entering standby power mode [ 23.445187] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 23.452194] #PF: supervisor instruction fetch in kernel mode [ 23.457896] #PF: error_code(0x0010) - not-present page [ 23.463065] PGD 0 P4D 0 [ 23.465640] Oops: Oops: 0010 [#1] SMP NOPTI [ 23.469869] CPU: 8 UID: 0 PID: 211 Comm: kworker/u48:18 Tainted: G S W 6.19.0-rc4-00020-gf0b9d8eb98df #10 PREEMPT(voluntary) [ 23.482512] Tainted: [S]=CPU_OUT_OF_SPEC, [W]=WARN [ 23.496511] Workqueue: async async_run_entry_fn [ 23.501087] RIP: 0010:0x0 [ 23.503755] Code: Unable to access opcode bytes at 0xffffffffffffffd6. [ 23.510324] RSP: 0018:ffffb4a60065fca8 EFLAGS: 00010246 [ 23.515592] RAX: 0000000000000000 RBX: ffff9f428290e000 RCX: 000000000000000f [ 23.522765] RDX: 0000000000000000 RSI: 0000000000000282 RDI: ffff9f428290e000 [ 23.529937] RBP: ffff9f4282907070 R08: ffff9f4281130428 R09: 00000000ffffffff [ 23.537111] R10: 0000000000000000 R11: 0000000000000001 R12: ffff9f42829070f8 [ 23.544284] R13: ffff9f4282906028 R14: ffff9f4282900000 R15: ffff9f4282906b68 [ 23.551457] FS: 0000000000000000(0000) GS:ffff9f466b2cf000(0000) knlGS:0000000000000000 [ 23.559588] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 23.565365] CR2: ffffffffffffffd6 CR3: 000000031c230001 CR4: 0000000000f70ef0 [ 23.572539] PKRU: 55555554 [ 23.575281] Call Trace: [ 23.577770] <TASK> [ 23.579905] intel_engines_reset_default_submission+0x42/0x60 [ 23.585695] __intel_gt_unset_wedged+0x191/0x200 [ 23.590360] intel_gt_unset_wedged+0x20/0x40 [ 23.594675] gt_sanitize+0x15e/0x170 [ 23.598290] i915_gem_suspend_late+0x6b/0x180 [ 23.602692] i915_drm_suspend_late+0x35/0xf0 [ 23.607008] ? __pfx_pci_pm_suspend_late+0x10/0x10 [ 23.611843] dpm_run_callback+0x78/0x1c0 [ 23.615817] device_suspend_late+0xde/0x2e0 [ 23.620037] async_suspend_late+0x18/0x30 [ 23.624082] async_run_entry_fn+0x25/0xa0 [ 23.628129] process_one_work+0x15b/0x380 [ 23.632182] worker_thread+0x2a5/0x3c0 [ 23.635973] ? __pfx_worker_thread+0x10/0x10 [ 23.640279] kthread+0xf6/0x1f0 [ 23.643464] ? __pfx_kthread+0x10/0x10 [ 23.647263] ? __pfx_kthread+0x10/0x10 [ 23.651045] ret_from_fork+0x131/0x190 [ 23.654837] ? __pfx_kthread+0x10/0x10 [ 23.658634] ret_from_fork_asm+0x1a/0x30 [ 23.662597] </TASK> [ 23.664826] Modules linked in: [ 23.667914] CR2: 0000000000000000 [ 23.671271] ------------[ cut here ]------------ (cherry picked from commit daa199abc3d3d1740c9e3a2c3e9216ae5b447cad)

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities