CVE-2025-39790
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
11/09/2025
Última modificación:
11/09/2025
Descripción
*** Pendiente de traducción *** 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]
Impacto
Referencias a soluciones, herramientas e información
- 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