CVE-2025-71285
Full vulnerability record from the local CVENow database.
Description
In the Linux kernel, the following vulnerability has been resolved: net: qrtr: Drop the MHI auto_queue feature for IPCR DL channels MHI stack offers the 'auto_queue' feature, which allows the MHI stack to auto queue the buffers for the RX path (DL channel). Though this feature simplifies the client driver design, it introduces race between the client drivers and the MHI stack. For instance, with auto_queue, the 'dl_callback' for the DL channel may get called before the client driver is fully probed. This means, by the time the dl_callback gets called, the client driver's structures might not be initialized, leading to NULL ptr dereference. Currently, the drivers have to workaround this issue by initializing the internal structures before calling mhi_prepare_for_transfer_autoqueue(). But even so, there is a chance that the client driver's internal code path may call the MHI queue APIs before mhi_prepare_for_transfer_autoqueue() is called, leading to similar NULL ptr dereference. This issue has been reported on the Qcom X1E80100 CRD machines affecting boot. So to properly fix all these races, drop the MHI 'auto_queue' feature altogether and let the client driver (QRTR) manage the RX buffers manually. In the QRTR driver, queue the RX buffers based on the ring length during probe and recycle the buffers in 'dl_callback' once they are consumed. This also warrants removing the setting of 'auto_queue' flag from controller drivers. Currently, this 'auto_queue' feature is only enabled for IPCR DL channel. So only the QRTR client driver requires the modification.
View original CVE JSON
{
"id": "CVE-2025-71285",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"published": "2026-05-06T12:16:27.613",
"lastModified": "2026-10-30T13:18:27.170",
"vulnStatus": "Modified",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: qrtr: Drop the MHI auto_queue feature for IPCR DL channels\n\nMHI stack offers the 'auto_queue' feature, which allows the MHI stack to\nauto queue the buffers for the RX path (DL channel). Though this feature\nsimplifies the client driver design, it introduces race between the client\ndrivers and the MHI stack. For instance, with auto_queue, the 'dl_callback'\nfor the DL channel may get called before the client driver is fully probed.\nThis means, by the time the dl_callback gets called, the client driver's\nstructures might not be initialized, leading to NULL ptr dereference.\n\nCurrently, the drivers have to workaround this issue by initializing the\ninternal structures before calling mhi_prepare_for_transfer_autoqueue().\nBut even so, there is a chance that the client driver's internal code path\nmay call the MHI queue APIs before mhi_prepare_for_transfer_autoqueue() is\ncalled, leading to similar NULL ptr dereference. This issue has been\nreported on the Qcom X1E80100 CRD machines affecting boot.\n\nSo to properly fix all these races, drop the MHI 'auto_queue' feature\naltogether and let the client driver (QRTR) manage the RX buffers manually.\nIn the QRTR driver, queue the RX buffers based on the ring length during\nprobe and recycle the buffers in 'dl_callback' once they are consumed. This\nalso warrants removing the setting of 'auto_queue' flag from controller\ndrivers.\n\nCurrently, this 'auto_queue' feature is only enabled for IPCR DL channel.\nSo only the QRTR client driver requires the modification."
},
{
"lang": "es",
"value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nnet: qrtr: Eliminar la característica 'auto_queue' de MHI para los canales DL de IPCR\n\nLa pila MHI ofrece la característica 'auto_queue', que permite a la pila MHI encolar automáticamente los búferes para la ruta RX (canal DL). Aunque esta característica simplifica el diseño del controlador cliente, introduce una condición de carrera entre los controladores cliente y la pila MHI. Por ejemplo, con auto_queue, la 'dl_callback' para el canal DL puede ser llamada antes de que el controlador cliente esté completamente sondeado. Esto significa que, para cuando se llama a la dl_callback, las estructuras del controlador cliente podrían no estar inicializadas, lo que lleva a una desreferencia de puntero NULL.\n\nActualmente, los controladores tienen que solucionar este problema inicializando las estructuras internas antes de llamar a mhi_prepare_for_transfer_autoqueue(). Pero aun así, existe la posibilidad de que la ruta de código interna del controlador cliente pueda llamar a las API de cola de MHI antes de que se llame a mhi_prepare_for_transfer_autoqueue(), lo que lleva a una desreferencia de puntero NULL similar. Este problema ha sido reportado en las máquinas Qcom X1E80100 CRD afectando el arranque.\n\nAsí que para corregir adecuadamente todas estas condiciones de carrera, se elimina por completo la característica 'auto_queue' de MHI y se deja que el controlador cliente (QRTR) gestione los búferes RX manualmente. En el controlador QRTR, se encolan los búferes RX basándose en la longitud del anillo durante el sondeo y se reciclan los búferes en 'dl_callback' una vez que se consumen. Esto también justifica la eliminación de la configuración del indicador 'auto_queue' de los controladores del controlador.\n\nActualmente, esta característica 'auto_queue' solo está habilitada para el canal DL de IPCR. Así que solo el controlador cliente QRTR requiere la modificación."
}
],
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "unaffected",
"programFiles": [
"drivers/accel/qaic/mhi_controller.c",
"drivers/bus/mhi/host/pci_generic.c",
"drivers/net/wireless/ath/ath11k/mhi.c",
"drivers/net/wireless/ath/ath12k/mhi.c",
"net/qrtr/mhi.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "227fee5fc99eeb74d43bf68832f6d59d30ac07d8",
"lessThan": "b7874c74bcc224fd586679e51b9ded65f66edc2a",
"versionType": "git",
"status": "affected"
},
{
"version": "227fee5fc99eeb74d43bf68832f6d59d30ac07d8",
"lessThan": "ab0bdaf7a7f4f83b947193563f2a483ab87f72db",
"versionType": "git",
"status": "affected"
},
{
"version": "227fee5fc99eeb74d43bf68832f6d59d30ac07d8",
"lessThan": "8e130ff078892fa5a6bf272ced7565af58d98a85",
"versionType": "git",
"status": "affected"
},
{
"version": "227fee5fc99eeb74d43bf68832f6d59d30ac07d8",
"lessThan": "7bdff9b9b0c65ac7105416fe3a40686832515e20",
"versionType": "git",
"status": "affected"
},
{
"version": "227fee5fc99eeb74d43bf68832f6d59d30ac07d8",
"lessThan": "8c464e00e0754e016816b1860fa9592dcad80eb2",
"versionType": "git",
"status": "affected"
},
{
"version": "227fee5fc99eeb74d43bf68832f6d59d30ac07d8",
"lessThan": "51731792a25cb312ca94cdccfa139eb46de1b2ef",
"versionType": "git",
"status": "affected"
},
{
"version": "c682fb70a7dfc25b848a4ff3a385b0471b470606",
"versionType": "git",
"status": "affected"
},
{
"version": "5.15.63",
"lessThan": "5.16",
"versionType": "semver",
"status": "affected"
}
]
},
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "affected",
"programFiles": [
"drivers/accel/qaic/mhi_controller.c",
"drivers/bus/mhi/host/pci_generic.c",
"drivers/net/wireless/ath/ath11k/mhi.c",
"drivers/net/wireless/ath/ath12k/mhi.c",
"net/qrtr/mhi.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "5.17",
"status": "affected"
},
{
"version": "0",
"lessThan": "5.17",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.1.191",
"lessThanOrEqual": "6.1.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.6.160",
"lessThanOrEqual": "6.6.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.12.114",
"lessThanOrEqual": "6.12.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.18.17",
"lessThanOrEqual": "6.18.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.19.6",
"lessThanOrEqual": "6.19.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.0",
"lessThanOrEqual": "*",
"versionType": "original_commit_for_fix",
"status": "unaffected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Primary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
"baseScore": 5.5,
"baseSeverity": "MEDIUM",
"attackVector": "LOCAL",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "NONE",
"integrityImpact": "NONE",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 1.8,
"impactScore": 3.6
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Primary",
"description": [
{
"lang": "en",
"value": "CWE-476"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.15.63",
"versionEndExcluding": "5.16",
"matchCriteriaId": "60ACBB16-9DB7-4B68-AF39-342F3BA4775E"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.17",
"versionEndExcluding": "6.18.17",
"matchCriteriaId": "9E1D818B-7FC7-4E36-AC6B-517B11C9D765"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.19",
"versionEndExcluding": "6.19.6",
"matchCriteriaId": "373EEEDA-FAA1-4FB4-B6ED-DB4DD99DBE67"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/51731792a25cb312ca94cdccfa139eb46de1b2ef",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/7bdff9b9b0c65ac7105416fe3a40686832515e20",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/8c464e00e0754e016816b1860fa9592dcad80eb2",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/8e130ff078892fa5a6bf272ced7565af58d98a85",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/ab0bdaf7a7f4f83b947193563f2a483ab87f72db",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/b7874c74bcc224fd586679e51b9ded65f66edc2a",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
]
}