CVE-2026-53158
Medium · 5.5CVSS
5.5
EPSS
0.1%
Published
Jun 25, 2026
CISA due date
—
Cloudanix analysis
Some Qualcomm-based Linux devices can crash or fail to boot if the processor receives a message from the signal-processing chip before the related driver is ready.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Race Condition
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is a race-condition flaw in the Linux kernel Qualcomm FastRPC driver. During rpmsg/glink channel initialization, the DSP can deliver a message before the FastRPC channel context is fully initialized or before driver data has been attached. The callback can then dereference a NULL or partially initialized channel context and attempt to take an uninitialized spinlock, causing a kernel NULL pointer dereference and likely kernel panic or boot-time crash. The primary technical impact is denial of service on systems using the affected Qualcomm FastRPC/rpmsg/glink path; there is no public evidence of code execution or privilege escalation.
Why it matters to the business
Affected Linux systems, especially Qualcomm-based embedded, mobile, edge, or appliance platforms using FastRPC with DSP communication, may crash or fail during boot if the race is triggered. This can cause device unavailability, service interruption, failed updates, increased support costs, or fleet instability. The risk is currently lower than actively exploited vulnerabilities because it is not in CISA KEV, has very low EPSS, and has no known public exploit maturity, but it should still be addressed in kernel maintenance cycles for reliability and availability.
How an attack unfolds
An attacker would need a way to influence or cause early DSP-to-application-processor rpmsg/glink traffic while the FastRPC driver is binding and initializing. If a message arrives before the driver has completed initialization, the FastRPC callback may retrieve no channel context or a partially initialized one. The callback then attempts to use fields such as the channel lock, triggering a NULL pointer dereference in kernel context. In practical terms, exploitation is most plausible through a malicious, compromised, or malfunctioning DSP/firmware component, a device-specific boot sequence that races driver initialization, or local access to interfaces that can influence DSP messaging. Successful exploitation would normally crash the kernel or prevent clean boot rather than provide direct attacker control.
How to fix it
Apply a Linux kernel update that includes the FastRPC fix moving channel context initialization before dev_set_drvdata() and adding a NULL guard in fastrpc_rpmsg_callback(). Because no product-specific fixed versions were provided, use the fixed kernel release or vendor advisory applicable to the device, distribution, BSP, Android kernel branch, or embedded platform. For systems that cannot be immediately updated, reduce exposure by limiting untrusted firmware, disabling unused DSP/FastRPC functionality where operationally feasible, validating DSP firmware provenance, and testing boot stability after firmware or kernel changes. Kernel module blacklisting may mitigate exposure only if FastRPC is not required by the platform workload.
How to confirm the fix worked
Confirm that the running kernel contains the FastRPC rpmsg callback fix from the applicable upstream, distribution, or vendor kernel source. Validate by checking the deployed kernel package/build against the vendor fixed version or by reviewing the fastrpc driver source for initialization before dev_set_drvdata() and a NULL check in fastrpc_rpmsg_callback(). Reboot affected hardware and monitor kernel logs for absence of FastRPC-related NULL pointer dereferences, qcom_glink receive-path crashes, or boot-time kernel panics. On managed fleets, inventory systems with Qualcomm FastRPC/rpmsg/glink support and verify that all have moved to a patched kernel or approved vendor firmware/kernel bundle.
Typical attack path
- Identify a Linux device using the Qualcomm FastRPC driver and rpmsg/glink communication with a DSP.
- Gain the ability to influence DSP firmware behavior, DSP-originated messages, or timing of rpmsg/glink traffic during driver initialization.
- Trigger an rpmsg/glink message before fastrpc_rpmsg_probe() has completed channel context initialization and driver data registration.
- Cause fastrpc_rpmsg_callback() to run with a NULL or partially initialized channel context.
- Trigger a kernel NULL pointer dereference, resulting in kernel oops, panic, reboot, or boot failure.
How to detect it
Review kernel logs, serial console output, pstore/ramoops records, crash dumps, and device management telemetry for boot-time kernel oops or panic events involving fastrpc_rpmsg_callback, fastrpc, qcom_glink_native_rx, or qcom_glink_smem_intr. Focus on crashes shortly after boot, driver binding, firmware loading, or DSP initialization. Useful artifacts include NULL pointer dereference messages, call traces showing the FastRPC rpmsg callback, faulting addresses near 0x178, and repeated reboot loops on Qualcomm platforms. Because exploitation requires device-specific timing or DSP message influence and no public exploit is known, detections should be triaged alongside firmware changes, kernel updates, hardware faults, and boot-sequence regressions.
- Unable to handle kernel NULL pointer dereference at virtual address 0000000000000178
- fastrpc_rpmsg_callback
- Call trace:
- _raw_spin_lock_irqsave
- qcom_glink_native_rx
- qcom_glink_smem_intr
- [fastrpc]
- [qcom_glink_smem]
- kernel NULL pointer dereference
- pc : _raw_spin_lock_irqsave
- lr : fastrpc_rpmsg_callback
What your security team should do
- Prioritize patching Qualcomm-based Linux, Android, embedded, edge, and appliance platforms that load the fastrpc driver or rely on DSP FastRPC services.
- Ask vendors or BSP maintainers for the kernel build that contains the FastRPC rpmsg callback NULL-dereference fix if no fixed package version is listed in standard advisories.
- Search historical kernel logs, crash dumps, pstore/ramoops, and device telemetry for FastRPC, qcom_glink, or NULL pointer dereference crashes during boot.
- Treat repeated boot-time crashes in the FastRPC/glink path as potential exploitation, firmware malfunction, or regression until root cause is confirmed.
- Restrict deployment of unsigned, untrusted, or non-vendor DSP firmware and include DSP firmware changes in security review and release testing.
- For devices where FastRPC is unnecessary, evaluate disabling or not loading the fastrpc module as a compensating control.
- Track this vulnerability at normal kernel-maintenance priority unless threat intelligence changes, because it is not currently KEV-listed, has no known ransomware association, and has very low EPSS.
The record
In the Linux kernel, the following vulnerability has been resolved: misc: fastrpc: Fix NULL pointer dereference in rpmsg callback A NULL pointer dereference was observed on Hawi at boot when the DSP sends a glink message before fastrpc_rpmsg_probe() has completed initialization: Unable to handle kernel NULL pointer dereference at virtual address 0000000000000178 pc : _raw_spin_lock_irqsave+0x34/0x8c lr : fastrpc_rpmsg_callback+0x3c/0xcc [fastrpc] ... Call trace: _raw_spin_lock_irqsave+0x34/0x8c (P) fastrpc_rpmsg_callback+0x3c/0xcc [fastrpc] qcom_glink_native_rx+0x538/0x6a4 qcom_glink_smem_intr+0x14/0x24 [qcom_glink_smem] The faulting address 0x178 corresponds to the lock variable inside struct fastrpc_channel_ctx, confirming that cctx is NULL when fastrpc_rpmsg_callback() attempts to take the spinlock. There are two issues here. First, dev_set_drvdata() is called before spin_lock_init() and idr_init(), leaving a window where the callback can retrieve a valid cctx pointer but operate on an uninitialized spinlock. Second, the rpmsg channel becomes live as soon as the driver is bound, so fastrpc_rpmsg_callback() can fire before dev_set_drvdata() is called at all, resulting in dev_get_drvdata() returning NULL. Fix both issues by moving all cctx initialization ahead of dev_set_drvdata() so the structure is fully initialized before it becomes visible to the callback, and add a NULL check in fastrpc_rpmsg_callback() as a guard against any remaining window.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-112405 Pillow is a Python imaging library. CWE-476
- CVE-2026-112392 Pillow is a Python imaging library. CWE-476
- CVE-2026-100348 kin-openapi is a Go project for handling OpenAPI files. CWE-476
- CVE-2026-100349 kin-openapi is a Go project for handling OpenAPI files. CWE-476
- CVE-2026-109280 ImageMagick 7.1.0-20 before 7.1.2-32 contains a use after free vulnerability in the -fx… CWE-476
- CVE-2026-109272 ImageMagick 7.1.1-31 before 7.1.2-32 contains a NULL pointer dereference in the… CWE-476
- CVE-2026-109258 ImageMagick 7.1.0-20 before 7.1.2-32 contains an invalid memory free vulnerability in the… CWE-476
- CVE-2026-107655 A flaw was found in CUPS. CWE-476