Cloudanix VulnDB

CVE-2026-98298

None

CVSS

—

EPSS

0.2%

Published

Oct 6, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A coding mistake in a Linux kernel driver could let DMA operations read or write the wrong memory areas, risking crashes or corrupted data transfers.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Data Exposure
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Incorrect use of scatterlist head instead of current entry when computing DMA length in mmp_pdma_prep_slave_sg causes out-of-bounds reads on shorter subsequent segments and silent truncation on longer ones.

Why it matters to the business

Kernel DMA operations on multi-segment buffers may corrupt memory or drop data, leading to crashes, device malfunction, or unreliable I/O on affected systems.

How an attack unfolds

An attacker crafts or influences a scatter-gather list with varying entry lengths passed to the mmp_pdma driver; the loop repeatedly reads the first entry's length, resulting in reads or writes beyond intended buffers.

How to fix it

Apply the upstream fix that changes sg_dma_len(sgl) to sg_dma_len(sg) inside the for_each_sg loop; rebuild and deploy the corrected kernel.

How to confirm the fix worked

Inspect the mmp_pdma.c source for the corrected sg_dma_len argument; boot the updated kernel and exercise multi-segment DMA transfers to confirm absence of prior symptoms.

Typical attack path

  1. Identify or trigger code paths that invoke mmp_pdma_prep_slave_sg with a multi-entry scatterlist
  2. Supply entries whose lengths differ from the first entry
  3. Observe resulting out-of-bounds memory access or truncated DMA transfer

How to detect it

Review kernel logs for DMA-related oops or warnings during scatter-gather operations; no specific post-exploitation artifacts are known.

What your security team should do

  • Prioritize kernel update on systems using the mmp_pdma controller
  • Monitor for related patches in distribution security feeds
  • Audit any custom DMA-using drivers for similar scatterlist handling errors

The record

In the Linux kernel, the following vulnerability has been resolved: dmaengine: mmp_pdma: fix wrong sg length in mmp_pdma_prep_slave_sg() In mmp_pdma_prep_slave_sg(), for_each_sg() iterates the scatterlist putting each entry into 'sg', but the entry length is read from 'sgl' (the list head) instead of 'sg' (the current entry): for_each_sg(sgl, sg, sg_len, i) { addr = sg_dma_address(sg); avail = sg_dma_len(sgl); /* should be 'sg' */ Consequently 'avail' is always the length of the first entry. For multi-sg lists this causes out-of-bounds reads when a later entry is shorter than the first, and silent data loss when it is longer. Single-sg or uniformly-sized lists happen to mask the issue.

Affected packages

Ecosystem Package Introduced Fixed