Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-74738

CVE-2026-74738: Linux Kernel Privilege Escalation Vulnerability

CVE-2026-74738 is a privilege escalation vulnerability in the Linux kernel regmap sdw-mbq module that can cause system crashes through a NULL pointer dereference. This article covers technical details, affected versions, and mitigation strategies.

Published:

CVE-2026-74738 Overview

CVE-2026-74738 is a NULL pointer dereference in the Linux kernel's regmap subsystem, specifically the SoundWire Multi-Byte Quantity (sdw-mbq) helper. The function regmap_sdw_mbq_poll_busy() invokes ctx->readable_reg() without verifying that the callback was registered by the driver. The readable_reg callback is optional, and drivers such as es9356 and tac5xx2-sdw build MBQ regmaps without providing one. When these devices respond with COMMAND_IGNORED, the poll path dereferences a NULL function pointer and crashes the kernel.

Critical Impact

A missing optional callback triggers a NULL function pointer call in kernel context, producing a kernel oops or panic that can render the affected system unavailable.

Affected Products

  • Linux kernel builds containing commit ca1b11b36d82 ("regmap: sdw-mbq: Allow defers on undeferrable controls")
  • Systems using SoundWire MBQ regmaps without a readable_reg callback (for example, es9356 and tac5xx2-sdw codec drivers)
  • Stable kernel branches that backported the ca1b11b36d82 change

Discovery Timeline

  • 2026-08-26 - CVE-2026-74738 published to NVD
  • 2026-08-26 - Last updated in NVD database

Technical Details for CVE-2026-74738

Vulnerability Analysis

The defect lives in regmap_sdw_mbq_poll_busy(), which decides whether to poll the SoundWire Function Busy bit by asking whether a register is readable. It does this by calling ctx->readable_reg(), a direct copy of config->readable_reg supplied by the driver. Elsewhere in regmap, a NULL ->readable_reg is treated as "every register is readable" by regmap_readable(), and drivers depend on that convention.

Before commit ca1b11b36d82 ("regmap: sdw-mbq: Allow defers on undeferrable controls"), the poll path only ran for controls explicitly marked deferrable. After that change, the poll runs on every -ENODATA return, including responses of COMMAND_IGNORED from SoundWire peripherals. Drivers that omit readable_reg therefore route the kernel through a NULL function pointer during normal bus activity.

Root Cause

The root cause is an inconsistent contract inside regmap. The core treats an unset readable_reg as permissive, but the sdw-mbq helper assumes the callback is always present. This is a NULL pointer dereference [CWE-476] triggered by an unchecked optional callback in kernel code.

Attack Vector

The condition is reachable through the SoundWire bus. A peripheral that returns COMMAND_IGNORED for an MBQ transaction to a regmap without a readable_reg callback causes the poll to fire on -ENODATA and dereference NULL. The fault requires the vulnerable driver combination to be loaded and interacting with a responsive SoundWire device.

No verified exploitation code is available. Technical details are documented in the upstream fixes: Kernel Git Commit 00268f94, Kernel Git Commit 5bd8e897, and Kernel Git Commit 6cf600b2.

Detection Methods for CVE-2026-74738

Indicators of Compromise

  • Kernel oops or panic reports whose call stack includes regmap_sdw_mbq_poll_busy and a NULL instruction pointer.
  • Log entries showing COMMAND_IGNORED responses on the SoundWire bus immediately before the fault.
  • Recurring crashes on systems running the es9356 or tac5xx2-sdw codec drivers after a kernel update that included commit ca1b11b36d82.

Detection Strategies

  • Inventory running kernels and confirm whether commit ca1b11b36d82 is present without one of the three fix commits listed in the references.
  • Correlate audio subsystem crashes with SoundWire codec drivers that build MBQ regmaps without a readable_reg callback.
  • Review dmesg and persistent crash logs for repeated NULL pointer dereferences in the regmap call path.

Monitoring Recommendations

  • Forward kernel crash telemetry and kdump output to a central log store for pattern analysis across fleets.
  • Track kernel package versions on Linux endpoints and servers, alerting when hosts run vulnerable stable branches.
  • Monitor audio and codec driver load events on systems that use SoundWire hardware, since the fault triggers only when those drivers are active.

How to Mitigate CVE-2026-74738

Immediate Actions Required

  • Apply the upstream fixes referenced by commits 00268f94, 5bd8e897, and 6cf600b2 to affected kernel trees.
  • Update to stable kernel releases that include the fix once distributions publish them.
  • Identify hosts running the es9356 or tac5xx2-sdw drivers and prioritize them for patching.

Patch Information

The fix teaches regmap_sdw_mbq_poll_busy() to treat a missing readable_reg callback the same way the rest of regmap does: assume the register is readable and poll. The change is available in three commits linked from NVD: Kernel Git Commit 00268f94, Kernel Git Commit 5bd8e897, and Kernel Git Commit 6cf600b2.

Workarounds

  • Unload or blacklist the affected SoundWire codec drivers on systems where audio functionality is not required until a patched kernel is deployed.
  • Revert commit ca1b11b36d82 on locally built kernels if the upstream fix cannot yet be applied, restoring the prior narrower poll behavior.
  • Avoid enabling deferred control paths on hardware known to answer COMMAND_IGNORED when running an unpatched kernel.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.