CVE-2026-53237
Medium · 5.5CVSS
5.5
EPSS
0.1%
Published
Jun 25, 2026
CISA due date
—
Cloudanix analysis
Some affected Linux-based devices can crash when going to sleep or waking up, causing an outage until they recover or are restarted.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is a Linux kernel NULL pointer dereference in the Marvell EBU GPIO driver suspend/resume path. During system suspend or resume, the driver calls PWM-related suspend/resume logic for every GPIO bank, even when a bank has no PWM capability and its mvpwm pointer is NULL. On affected Marvell Armada/EBU-based systems, this can dereference a NULL pointer while accessing the PWM blink_select register path, causing a kernel oops/panic and denial of service. The impact is availability-focused; the available information does not indicate code execution, privilege escalation, or data disclosure.
Why it matters to the business
Affected embedded, appliance, networking, storage, industrial, or IoT systems using vulnerable Linux kernels on Marvell Armada/EBU hardware may crash during suspend or resume operations. This can cause service outages, device reboots, failed power-management workflows, loss of connectivity, and operational disruption, particularly for unattended or remotely managed devices. The vulnerability is not listed in CISA KEV, has no known exploit maturity, and has a low EPSS score, so broad internet-scale exploitation is currently unlikely; however, environments that rely on suspend/resume or expose power-management controls should treat it as an availability reliability issue.
How an attack unfolds
An attacker first needs a way to trigger a suspend or resume transition on an affected Linux system, such as local shell access with permission to write to power-management interfaces, access to a management function that initiates sleep/resume, or control over software that invokes system suspend. When the system enters the suspend/resume device power-management flow, the kernel iterates over GPIO banks and invokes the Marvell EBU GPIO suspend handler. For GPIO banks without PWM support, the driver still reaches PWM suspend/resume handling with a NULL mvpwm structure. The kernel then attempts to access a field through that NULL pointer, producing an oops or panic. The result is a denial of service through system crash, reboot, or failed power-state transition.
How to fix it
Apply a Linux kernel update from the operating system, appliance, board-support-package, or device vendor that includes the mvebu GPIO fix adding a NULL check before PWM suspend/resume handling. If no packaged fixed version is available, backport the upstream kernel patch for the mvebu GPIO driver that checks mvchip->mvpwm before calling mvebu_pwm_suspend() or mvebu_pwm_resume(). As interim mitigation, restrict who can trigger suspend/resume, disable unnecessary suspend states on affected devices, remove or lock down exposed power-management controls, and avoid operational workflows that put affected systems into suspend until patched. For embedded products, update firmware images and validate the fix against the exact hardware device tree and GPIO bank configuration.
How to confirm the fix worked
Confirm the running kernel or firmware contains the patched mvebu GPIO driver logic that skips PWM suspend/resume operations when mvchip->mvpwm is NULL. Validate by reviewing vendor advisories, package changelogs, kernel commit history, or source code for the added NULL check. On representative affected hardware, perform controlled suspend and resume testing while monitoring the console, dmesg, and persistent kernel logs for oops/panic output. A fixed system should complete suspend/resume without NULL pointer dereference messages referencing mvebu_gpio_suspend, mvebu_pwm_suspend, regmap_read, or regmap_mmio_read. Also confirm that unprivileged users and remote management paths cannot trigger suspend unless explicitly required.
Typical attack path
- Identify or gain access to a Linux system running an affected kernel on Marvell Armada/EBU hardware using the mvebu GPIO driver.
- Obtain the ability to initiate suspend or resume, either through local privileges, exposed management functionality, or an application/service that can request system sleep.
- Trigger a suspend operation, commonly through Linux power-management interfaces such as /sys/power/state or an equivalent system management API.
- During device suspend or resume, the vulnerable mvebu GPIO path processes a GPIO bank without PWM support.
- The kernel dereferences a NULL mvpwm pointer while accessing PWM state, causing a kernel oops/panic.
- The device becomes unavailable, reboots, or requires manual recovery depending on kernel panic and watchdog configuration.
How to detect it
Look for evidence of kernel crashes or oops events occurring during suspend or resume on Marvell Armada/EBU systems. Relevant log sources include dmesg, journalctl -k, /var/log/kern.log, /var/log/messages, serial console logs, pstore/ramoops records, crash dumps, watchdog reset logs, and device-management event logs. Search for NULL pointer dereference messages that include mvebu GPIO suspend/resume functions, regmap reads, or writes to /sys/power/state shortly before the crash. Correlate events where a user, script, management daemon, or remote-management service initiated suspend with immediate kernel oops/panic output. Because this flaw produces a kernel availability failure rather than a persistent implant, detection is primarily based on crash artifacts, power-state transition logs, and reboot/reset timing rather than malware indicators.
- Unable to handle kernel NULL pointer dereference at virtual address 00000020
- Internal error: Oops: 815
- PC is at regmap_mmio_read
- LR is at regmap_mmio_read
- regmap_mmio_read from _regmap_bus_reg_read
- _regmap_read from regmap_read
- regmap_read from mvebu_gpio_suspend
- mvebu_gpio_suspend from dpm_run_callback
- dpm_suspend_start from suspend_devices_and_enter
- suspend_devices_and_enter from pm_suspend
- pm_suspend from state_store
- state_store from kernfs_fop_write_iter
- /sys/power/state
- mvebu_gpio_suspend
- mvebu_pwm_suspend
- mvebu_pwm_resume
- Hardware name: Marvell Armada 370/XP
What your security team should do
- Inventory Linux-based devices using Marvell Armada/EBU platforms or the mvebu GPIO driver, especially embedded appliances and custom firmware builds.
- Prioritize patching systems that use suspend/resume, are remotely managed, or provide any interface that could trigger power-state transitions.
- Obtain vendor kernel, firmware, or BSP updates containing the mvebu GPIO NULL-check fix; if unavailable, request a vendor hotfix or backport the upstream patch.
- Until patched, restrict access to /sys/power/state, system suspend commands, and remote management functions that can initiate sleep or resume operations.
- Review kernel logs for historical crashes around suspend/resume to determine whether the issue has already caused outages.
- For appliances and embedded products, add suspend/resume regression testing to release validation for all supported hardware variants.
- Ensure watchdog and remote recovery mechanisms are configured so affected devices can recover automatically from kernel panic or failed resume events.
The record
In the Linux kernel, the following vulnerability has been resolved: gpio: mvebu: fix NULL pointer dereference in suspend/resume mvebu_pwm_suspend() and mvebu_pwm_resume() are called for all GPIO banks during suspend/resume, but not all banks have PWM functionality. GPIO banks without PWM have mvchip->mvpwm set to NULL. Calling mvebu_pwm_suspend() with mvpwm == NULL causes a NULL pointer dereference when it tries to access mvpwm->blink_select. Unable to handle kernel NULL pointer dereference at virtual address 00000020 when write [00000020] *pgd=00000000 Internal error: Oops: 815 [#1] PREEMPT ARM Modules linked in: CPU: 0 UID: 0 PID: 406 Comm: sh Not tainted 6.12.74-rt12-yocto-standard-g4e96f98fb7db-dirty #353 Hardware name: Marvell Armada 370/XP (Device Tree) PC is at regmap_mmio_read+0x38/0x54 LR is at regmap_mmio_read+0x38/0x54 pc : [<c05fd2ac>] lr : [<c05fd2ac>] psr: 200f0013 sp : f0c11d10 ip : 00000000 fp : c100d2f0 r10: c14fb854 r9 : 00000000 r8 : 00000000 r7 : c1799c00 r6 : 00000020 r5 : 00000020 r4 : c179c7c0 r3 : f0a231a0 r2 : 00000020 r1 : 00000020 r0 : 00000000 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 135ec059 DAC: 00000051 Call trace: regmap_mmio_read from _regmap_bus_reg_read+0x78/0xac _regmap_bus_reg_read from _regmap_read+0x60/0x154 _regmap_read from regmap_read+0x3c/0x60 regmap_read from mvebu_gpio_suspend+0xa4/0x14c mvebu_gpio_suspend from dpm_run_callback+0x54/0x180 dpm_run_callback from device_suspend+0x124/0x630 device_suspend from dpm_suspend+0x124/0x270 dpm_suspend from dpm_suspend_start+0x64/0x6c dpm_suspend_start from suspend_devices_and_enter+0x140/0x8e8 suspend_devices_and_enter from pm_suspend+0x2fc/0x308 pm_suspend from state_store+0x6c/0xc8 state_store from kernfs_fop_write_iter+0x10c/0x1f8 kernfs_fop_write_iter from vfs_write+0x270/0x468 vfs_write from ksys_write+0x70/0xf0 ksys_write from ret_fast_syscall+0x0/0x54 Add a NULL check for mvchip->mvpwm before calling the PWM suspend/resume functions.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-62966 ESPAsyncWebServer is an asynchronous HTTP and WebSocket server library for ESP32… CWE-476
- CVE-2026-59993 Picotls is a TLS protocol library that allows users select different crypto backends… CWE-476
- CVE-2026-62298 mouse07410/asn1c is an ASN.1 compiler. CWE-476
- CVE-2026-119842 A flaw was found in GStreamer's gst-plugins-base MicroDVD subtitle parser. CWE-476
- CVE-2026-120046 Nezha 2.0.0 before 2.4.0 contains a NULL pointer dereference vulnerability in… CWE-476
- CVE-2026-119728 A flaw was found in the H.264 video parser in gst-plugins-bad. CWE-476
- CVE-2026-119760 sniproxy through 0.7.0 contains a NULL pointer dereference vulnerability in… CWE-476
- CVE-2026-105924 A NULL pointer dereference vulnerability in the Qt QCborValue to JSON conversion of the… CWE-476