GHSA-72GW-R7X5-6V8V
Vulnerability from github – Published: 2026-09-17 18:32 – Updated: 2026-09-17 18:32In the Linux kernel, the following vulnerability has been resolved:
wifi: ath10k: snoc: use memcpy_fromio() for MSA ramdump
On WCN3990/SNOC the MSA region is mapped with devm_memremap(MEMREMAP_WT). On arm64 such a mapping is not Normal-cacheable, so unaligned accesses to it are not permitted. ath10k_msa_dump_memory() copies the region with a plain memcpy(), whose optimized __pi_memcpy_generic implementation issues wide/unaligned loads. This triggers an alignment fault (FSC=0x21) Oops in ath10k_snoc_fw_crashed_dump() while collecting the devcoredump:
Unable to handle kernel paging request ... FSC=0x21: alignment fault pc : __pi_memcpy_generic lr : ath10k_snoc_fw_crashed_dump [ath10k_snoc]
The Oops both leaves the firmware RAM dump buffer zeroed (no dump is captured) and crashes the kernel, which in turn breaks modem SSR recovery.
Use memcpy_fromio(), which only performs accesses that are valid for such a device-memory mapping. The generic memcpy_fromio() implementation aligns the source before issuing word-sized reads and stores the destination with put_unaligned(), so it is also safe for the coherent DMA allocation used on the non-reserved-memory path. ath11k and ath12k use the same pattern when copying target memory into crash dumps, so call it unconditionally here too. The MEMREMAP_WT pointer is a plain void *, so an explicit __iomem cast is needed; use __force to keep sparse happy.
Tested-on: WCN3990 hw1.0 SNOC WLAN.HL.3.3.7.c5-00107-QCAHLSWMTPL-1
{
"affected": [],
"aliases": [
"CVE-2026-90348"
],
"database_specific": {
"cwe_ids": [],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-09-17T17:17:33Z",
"severity": null
},
"details": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: ath10k: snoc: use memcpy_fromio() for MSA ramdump\n\nOn WCN3990/SNOC the MSA region is mapped with devm_memremap(MEMREMAP_WT).\nOn arm64 such a mapping is not Normal-cacheable, so unaligned accesses to\nit are not permitted. ath10k_msa_dump_memory() copies the region with a\nplain memcpy(), whose optimized __pi_memcpy_generic implementation issues\nwide/unaligned loads. This triggers an alignment fault (FSC=0x21) Oops in\nath10k_snoc_fw_crashed_dump() while collecting the devcoredump:\n\n Unable to handle kernel paging request ... FSC=0x21: alignment fault\n pc : __pi_memcpy_generic\n lr : ath10k_snoc_fw_crashed_dump [ath10k_snoc]\n\nThe Oops both leaves the firmware RAM dump buffer zeroed (no dump is\ncaptured) and crashes the kernel, which in turn breaks modem SSR\nrecovery.\n\nUse memcpy_fromio(), which only performs accesses that are valid for such\na device-memory mapping. The generic memcpy_fromio() implementation aligns\nthe source before issuing word-sized reads and stores the destination with\nput_unaligned(), so it is also safe for the coherent DMA allocation used on\nthe non-reserved-memory path. ath11k and ath12k use the same pattern\nwhen copying target memory into crash dumps, so call it unconditionally\nhere too.\nThe MEMREMAP_WT pointer is a plain void *, so an explicit __iomem cast is\nneeded; use __force to keep sparse happy.\n\nTested-on: WCN3990 hw1.0 SNOC WLAN.HL.3.3.7.c5-00107-QCAHLSWMTPL-1",
"id": "GHSA-72gw-r7x5-6v8v",
"modified": "2026-09-17T18:32:02Z",
"published": "2026-09-17T18:32:02Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-90348"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/045d1bfb72d2631ab9ec74afa491aa788ebb57aa"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/152e894e90716163c646d70f86b3afeb70442783"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/4f25071afe9218aaae1c63fbf75e229aa6405319"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/7039825a7479df637c4f5d546cb0e1cec18cd8e1"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/838cab267ce9a975776e022f25094f8cbe1625d2"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/e5bc3658da9c8a535e3fa5c0c875b2a456954e81"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/eb946595a58decdb4cab1b5f3c972ae66f41f1c8"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/fed1f662c9f9fd19eeab6c01966b7b5a33804420"
}
],
"schema_version": "1.4.0",
"severity": []
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.