CVE-2025-39790
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
11/09/2025
Last modified:
03/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
bus: mhi: host: Detect events pointing to unexpected TREs<br />
<br />
When a remote device sends a completion event to the host, it contains a<br />
pointer to the consumed TRE. The host uses this pointer to process all of<br />
the TREs between it and the host&#39;s local copy of the ring&#39;s read pointer.<br />
This works when processing completion for chained transactions, but can<br />
lead to nasty results if the device sends an event for a single-element<br />
transaction with a read pointer that is multiple elements ahead of the<br />
host&#39;s read pointer.<br />
<br />
For instance, if the host accesses an event ring while the device is<br />
updating it, the pointer inside of the event might still point to an old<br />
TRE. If the host uses the channel&#39;s xfer_cb() to directly free the buffer<br />
pointed to by the TRE, the buffer will be double-freed.<br />
<br />
This behavior was observed on an ep that used upstream EP stack without<br />
&#39;commit 6f18d174b73d ("bus: mhi: ep: Update read pointer only after buffer<br />
is written")&#39;. Where the device updated the events ring pointer before<br />
updating the event contents, so it left a window where the host was able to<br />
access the stale data the event pointed to, before the device had the<br />
chance to update them. The usual pattern was that the host received an<br />
event pointing to a TRE that is not immediately after the last processed<br />
one, so it got treated as if it was a chained transaction, processing all<br />
of the TREs in between the two read pointers.<br />
<br />
This commit aims to harden the host by ensuring transactions where the<br />
event points to a TRE that isn&#39;t local_rp + 1 are chained.<br />
<br />
[mani: added stable tag and reworded commit message]
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/2ec99b922f4661521927eeada76f431eebfbabc4
- https://git.kernel.org/stable/c/4079c6c59705b96285219b9efc63cab870d757b7
- https://git.kernel.org/stable/c/44e1a079e18f78d6594a715b0c6d7e18c656f7b9
- https://git.kernel.org/stable/c/5bd398e20f0833ae8a1267d4f343591a2dd20185
- https://git.kernel.org/stable/c/5e17429679a8545afe438ce7a82a13a54e8ceabb
- https://git.kernel.org/stable/c/7b3f0e3b60c27f4fcb69927d84987e5fd6240530
- https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html



