---
id: "CVE-2026-98940"
kind: "vulnerability"
aliases: ["CVE-2026-98940"]
title: "Linux kernel: audio DAI table index bug corrupts memory on Qualcomm LPASS"
severity: "unknown"
cvss: null
epss: 0.00209
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["audio", "embedded-linux", "linux-kernel", "qualcomm-soc", "runtime"]
not_affected_if: ["no-qualcomm-lpass-audio"]
published_at: "2026-10-23T13:17:14+00:00"
first_seen_at: "2026-10-23T21:57:33+00:00"
updated_at: "2026-10-25T12:38:50+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98940", "first_seen_at": "2026-10-23T21:57:33+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-98940", "first_seen_at": "2026-10-25T12:38:50+00:00"}]
---

# Linux kernel: audio DAI table index bug corrupts memory on Qualcomm LPASS

In the Linux kernel's Qualcomm LPASS audio driver, the probe code indexed the DAI driver table with a hardware port ID instead of the loop index, so on platforms with sparse DAI IDs it writes past the table entry it should update. The sources do not describe an attacker-triggered exploit path or a confirmed impact beyond this out-of-bounds write.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- unknown

## Fix

- Update to a Linux kernel release that includes the upstream commit 'ASoC: qcom: lpass-cpu: use DAI table index for playback constraints' (version unknown from sources)

## Timeline

- 2026-10-23T21:57:33+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-98940
- 2026-10-25T12:38:50+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-98940

## From the sources

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

ASoC: qcom: lpass-cpu: use DAI table index for playback constraints

The DAI ID is a hardware port ID and is not necessarily the index of
the corresponding entry in variant->dai_driver.

When configuring a DAI with LPAIF_I2SCTL_MODE_QUAD01, the probe code
currently uses dai_id to index variant->dai_driver. This is incorrect
for platforms where DAI IDs are sparse. For example, the IPQ806x MI2S
DAI has ID 4 while it is the only entry in the DAI driver table. If
that DAI is configured for QUAD01 and probe reaches this branch, the
code writes beyond that single entry via dai_driver[4] instead of
updating the DAI being processed.

Use the loop index i when updating the current DAI's playback channel
constraints, while retaining dai_id for indexing the hardware-port
specific playback SD-line mode array.

This fixes the incorrect DAI table access for platforms where the DAI
ID does not match its position in the driver table.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
