perf: Fix sample vs do_exit()
In the Linux kernel, the following vulnerability has been resolved: perf: Fix sample vs do_exit() Baisheng Gao reported an ARM64 crash, which Mark decoded as being a synchronous external abort -- most likely due to trying to access MMIO in bad ways. The crash further shows perf trying to do a user stack sample while in exit_mmap()'s tlb_finish_mmu() -- i.e. while tearing down the address space it is trying to access. It turns out that we stop perf after we tear down the userspace mm; a receipie for disaster, since perf likes to access userspace for various reasons. Flip this order by moving up where we stop perf in do_exit(). Additionally, harden PERF_SAMPLE_CALLCHAIN and PERF_SAMPLE_STACK_USER to abort when the current task does not have an mm (exit_mm() makes sure to set current->mm = NULL; before commencing with the actual teardown). Such that CPU wide events don't trip on this same problem.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.239, 5.15.186, 5.4.295, 6.1.142, 6.12.35, 6.15.4, 6.6.95
- CVEs
- CVE-2025-38424
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 07:57 UTC · Revision 1
Source evidence
In the Linux kernel, the following vulnerability has been resolved: perf: Fix sample vs do_exit() Baisheng Gao reported an ARM64 crash, which Mark decoded as being a synchronous external abort -- most likely due to trying to access MMIO in bad ways. The crash further shows perf trying to do a user stack sample while in exit_mmap()'s tlb_finish_mmu() -- i.e. while tearing down the address space it is trying to access. It turns out that we stop perf after we tear down the userspace mm; a receipie for disaster, since perf likes to access userspace for various reasons. Flip this order by moving up where we stop perf in do_exit(). Additionally, harden PERF_SAMPLE_CALLCHAIN and PERF_SAMPLE_STACK_USER to abort when the current task does not have an mm (exit_mm() makes sure to set current->mm = NULL; before commencing with the actual teardown). Such that CPU wide events don't trip on this same problem.
osv:CVE-2025-38424
Kernel
Fixed versions: 5.4.295, 5.10.239, 5.15.186, 6.1.142, 6.6.95, 6.12.35, 6.15.4
Complete source record
{
"id": "5baa0821dcefb9ccaa0982cf76c94aa9563bbda3b081f63c3aea569f8b3156ed",
"url": "https://osv.dev/vulnerability/CVE-2025-38424",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "perf: Fix sample vs do_exit()",
"summary": "In the Linux kernel, the following vulnerability has been resolved: perf: Fix sample vs do_exit() Baisheng Gao reported an ARM64 crash, which Mark decoded as being a synchronous external abort -- most likely due to trying to access MMIO in bad ways. The crash further shows perf trying to do a user stack sample while in exit_mmap()'s tlb_finish_mmu() -- i.e. while tearing down the address space it is trying to access. It turns out that we stop perf after we tear down the userspace mm; a receipie for disaster, since perf likes to access userspace for various reasons. Flip this order by moving up where we stop perf in do_exit(). Additionally, harden PERF_SAMPLE_CALLCHAIN and PERF_SAMPLE_STACK_USER to abort when the current task does not have an mm (exit_mm() makes sure to set current->mm = NULL; before commencing with the actual teardown). Such that CPU wide events don't trip on this same problem.",
"evidence": "osv:CVE-2025-38424",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.4.295",
"evidence": "/affected/1/ranges"
},
{
"value": "5.10.239",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.186",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.142",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.95",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.35",
"evidence": "/affected/1/ranges"
},
{
"value": "6.15.4",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "CVE-2025-38424",
"aliases": [
"CVE-2025-38424"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "c5ebcedb566ef17bda7b02686e0d658a7bb42ee7"
},
{
"fixed": "7b8f3c72175c6a63a95cf2e219f8b78e2baad34e"
},
{
"fixed": "507c9a595bad3abd107c6a8857d7fd125d89f386"
},
{
"fixed": "a9f6aab7910a0ef2895797f15c947f6d1053160f"
},
{
"fixed": "975ffddfa2e19823c719459d2364fcaa17673964"
},
{
"fixed": "2ee6044a693735396bb47eeaba1ac3ae26c1c99b"
},
{
"fixed": "456019adaa2f5366b89c868dea9b483179bece54"
},
{
"fixed": "7311970d07c4606362081250da95f2c7901fc0db"
},
{
"fixed": "4f6fc782128355931527cefe3eb45338abd8ab39"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-38424.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "3.7.0"
},
{
"fixed": "5.4.295"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.5.0"
},
{
"fixed": "5.10.239"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.186"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.142"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.95"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.35"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.15.4"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-38424.json"
}
}
],
"modified": "2026-10-28T02:30:50.378732289Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/2ee6044a693735396bb47eeaba1ac3ae26c1c99b",
"https://git.kernel.org/stable/c/456019adaa2f5366b89c868dea9b483179bece54",
"https://git.kernel.org/stable/c/4f6fc782128355931527cefe3eb45338abd8ab39",
"https://git.kernel.org/stable/c/507c9a595bad3abd107c6a8857d7fd125d89f386",
"https://git.kernel.org/stable/c/7311970d07c4606362081250da95f2c7901fc0db",
"https://git.kernel.org/stable/c/7b8f3c72175c6a63a95cf2e219f8b78e2baad34e",
"https://git.kernel.org/stable/c/975ffddfa2e19823c719459d2364fcaa17673964",
"https://git.kernel.org/stable/c/a9f6aab7910a0ef2895797f15c947f6d1053160f",
"https://lists.debian.org/debian-lts-announce/2025/10/msg00007.html",
"https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/38xxx/CVE-2025-38424.json",
"https://nvd.nist.gov/vuln/detail/CVE-2025-38424",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/38xxx/CVE-2025-38424.json"
}
},
"related_cves": [
{
"value": "CVE-2025-38424",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 518691,
"published_at": "2025-07-25T14:16:44.846+00:00"
}