CVE-2025-22049 (GCVE-0-2025-22049)
Vulnerability from cvelistv5
Published
2025-04-16 14:12
Modified
2026-08-05 11:56
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
LoongArch: Increase ARCH_DMA_MINALIGN up to 16
ARCH_DMA_MINALIGN is 1 by default, but some LoongArch-specific devices
(such as APBDMA) require 16 bytes alignment. When the data buffer length
is too small, the hardware may make an error writing cacheline. Thus, it
is dangerous to allocate a small memory buffer for DMA. It's always safe
to define ARCH_DMA_MINALIGN as L1_CACHE_BYTES but unnecessary (kmalloc()
need small memory objects). Therefore, just increase it to 16.
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| Linux | Linux |
Version: fa96b57c149061f71a70bd6582d995f6424fbbf4 Version: fa96b57c149061f71a70bd6582d995f6424fbbf4 Version: fa96b57c149061f71a70bd6582d995f6424fbbf4 Version: fa96b57c149061f71a70bd6582d995f6424fbbf4 Version: fa96b57c149061f71a70bd6582d995f6424fbbf4 Version: fa96b57c149061f71a70bd6582d995f6424fbbf4 |
||
{
"containers": {
"adp": [
{
"providerMetadata": {
"dateUpdated": "2025-11-03T19:41:31.511Z",
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE"
},
"references": [
{
"url": "https://lists.debian.org/debian-lts-announce/2025/05/msg00045.html"
}
],
"title": "CVE Program Container"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"arch/loongarch/include/asm/cache.h"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "f39af67f03b564b763b06e44cb960c10a382d54a",
"status": "affected",
"version": "fa96b57c149061f71a70bd6582d995f6424fbbf4",
"versionType": "git"
},
{
"lessThan": "279ec25c2df49fba1cd9488f2ddd045d9cb2112e",
"status": "affected",
"version": "fa96b57c149061f71a70bd6582d995f6424fbbf4",
"versionType": "git"
},
{
"lessThan": "1d0def2d1658666ec1f32c9495df60e7411e3c82",
"status": "affected",
"version": "fa96b57c149061f71a70bd6582d995f6424fbbf4",
"versionType": "git"
},
{
"lessThan": "bfff341cac7c650e6ca8d10503725992f5564d0f",
"status": "affected",
"version": "fa96b57c149061f71a70bd6582d995f6424fbbf4",
"versionType": "git"
},
{
"lessThan": "8b82aea3666f8f2c78f86148d78aea99c46e0f82",
"status": "affected",
"version": "fa96b57c149061f71a70bd6582d995f6424fbbf4",
"versionType": "git"
},
{
"lessThan": "4103cfe9dcb88010ae4911d3ff417457d1b6a720",
"status": "affected",
"version": "fa96b57c149061f71a70bd6582d995f6424fbbf4",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"arch/loongarch/include/asm/cache.h"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.19"
},
{
"lessThan": "5.19",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.134",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.87",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.23",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.13.*",
"status": "unaffected",
"version": "6.13.11",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.14.*",
"status": "unaffected",
"version": "6.14.2",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "6.15",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.134",
"versionStartIncluding": "5.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.87",
"versionStartIncluding": "5.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.23",
"versionStartIncluding": "5.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.13.11",
"versionStartIncluding": "5.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.14.2",
"versionStartIncluding": "5.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.15",
"versionStartIncluding": "5.19",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nLoongArch: Increase ARCH_DMA_MINALIGN up to 16\n\nARCH_DMA_MINALIGN is 1 by default, but some LoongArch-specific devices\n(such as APBDMA) require 16 bytes alignment. When the data buffer length\nis too small, the hardware may make an error writing cacheline. Thus, it\nis dangerous to allocate a small memory buffer for DMA. It\u0027s always safe\nto define ARCH_DMA_MINALIGN as L1_CACHE_BYTES but unnecessary (kmalloc()\nneed small memory objects). Therefore, just increase it to 16."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The vulnerable path is entered by triggering a DMA transaction on an APBDMA-backed peripheral (I2S/PCM device node, APB slave I/O) from a local syscall/ioctl; no network protocol handler or remote peer data reaches this code. The APBDMA controller drives no network device, so remote or adjacent reach is not defensible.\nAC:L - There is no race and no condition outside the attacker\u0027s control \u2014 the 16-byte hardware write granule versus the 8-byte `KMALLOC_MIN_SIZE` mismatch is deterministic on every affected transfer, and the attacker can repeat the I/O arbitrarily while heap-spraying to control which slab object sits adjacent to the undersized `kmalloc-8` buffer.\nPR:L - An unprivileged local account suffices \u2014 opening the sound/APB peripheral device node and starting a transfer requires no capability check, and on the embedded Loongson-2K systems where APBDMA is present these nodes are routinely accessible to ordinary users. No real root in the initial namespace is needed.\nUI:N - The attacker initiates the DMA transfer directly through their own file descriptor; no victim must mount a filesystem, open a file, or take any other action.\nS:U - The APBDMA engine is programmed by trusted in-kernel driver code and the resulting overrun lands in the kernel\u0027s own slab heap, so the corruption stays within the kernel\u0027s security authority \u2014 no IOMMU, hypervisor, or sandbox boundary is crossed.\nC:H - In the memory\u2192device direction the 16-byte granule reads past the end of the undersized `kmalloc()` object and transmits adjacent kernel heap contents out to the peripheral, and the resulting heap corruption is a general primitive that can be leveraged to disclose kernel memory.\nI:H - In the device\u2192memory direction the hardware writes up to 15 bytes beyond the allocated object, overwriting neighbouring slab objects with device-supplied data \u2014 an out-of-bounds heap write that, combined with groomable `kmalloc-8` neighbours, is exploitable for control-flow-relevant corruption.\nA:H - Silent corruption of adjacent slab objects \u2014 including list pointers and object headers of unrelated allocations \u2014 reliably leads to slab corruption reports, oopses, and kernel panics, and nothing (no bounce buffer, since LoongArch devices are treated as coherent) prevents it from recurring on every transfer."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-05T11:56:21.806Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/f39af67f03b564b763b06e44cb960c10a382d54a"
},
{
"url": "https://git.kernel.org/stable/c/279ec25c2df49fba1cd9488f2ddd045d9cb2112e"
},
{
"url": "https://git.kernel.org/stable/c/1d0def2d1658666ec1f32c9495df60e7411e3c82"
},
{
"url": "https://git.kernel.org/stable/c/bfff341cac7c650e6ca8d10503725992f5564d0f"
},
{
"url": "https://git.kernel.org/stable/c/8b82aea3666f8f2c78f86148d78aea99c46e0f82"
},
{
"url": "https://git.kernel.org/stable/c/4103cfe9dcb88010ae4911d3ff417457d1b6a720"
}
],
"title": "LoongArch: Increase ARCH_DMA_MINALIGN up to 16",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2025-22049",
"datePublished": "2025-04-16T14:12:08.317Z",
"dateReserved": "2024-12-29T08:45:45.811Z",
"dateUpdated": "2026-08-05T11:56:21.806Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…