arm64: ftrace: fix module PLTs with mcount
In the Linux kernel, the following vulnerability has been resolved: arm64: ftrace: fix module PLTs with mcount Li Huafei reports that mcount-based ftrace with module PLTs was broken by commit: a6253579977e4c6f ("arm64: ftrace: consistently handle PLTs.") When a module PLTs are used and a module is loaded sufficiently far away from the kernel, we'll create PLTs for any branches which are out-of-range. These are separate from the special ftrace trampoline PLTs, which the module PLT code doesn't directly manipulate. When mcount is in use this is a problem, as each mcount callsite in a module will be initialized to point to a module PLT, but since commit a6253579977e4c6f ftrace_make_nop() will assume that the callsite has been initialized to point to the special ftrace trampoline PLT, and ftrace_find_callable_addr() rejects other cases. This means that when ftrace tries to initialize a callsite via ftrace_make_nop(), the call to ftrace_find_callable_addr() will find that the `_mcount` stub is out-of-range and is not handled by the ftrace PLT, resulting in a splat: | ftrace_test: loading out-of-tree module taints kernel. | ftrace: no module PLT for _mcount | ------------[ ftrace bug ]------------ | ftrace failed to modify | [] 0xffff800029180014 | actual: 44:00:00:94 | Initializing ftrace call sites | ftrace record flags: 2000000 | (0) | expected tramp: ffff80000802eb3c | ------------[ cut here ]------------ | WARNING: CPU: 3 PID: 157 at kernel/trace/ftrace.c:2120 ftrace_bug+0x94/
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.150, 5.15.75, 5.19.17, 6.0.3
- CVEs
- CVE-2022-50579
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 28 Oct 2026, 08:57 UTC · Revision 1
Source evidence
arm64: ftrace: fix module PLTs with mcount
core-osv · Original sourcePublished 22 Oct 2025, 13:23 UTC
In the Linux kernel, the following vulnerability has been resolved: arm64: ftrace: fix module PLTs with mcount Li Huafei reports that mcount-based ftrace with module PLTs was broken by commit: a6253579977e4c6f ("arm64: ftrace: consistently handle PLTs.") When a module PLTs are used and a module is loaded sufficiently far away from the kernel, we'll create PLTs for any branches which are out-of-range. These are separate from the special ftrace trampoline PLTs, which the module PLT code doesn't directly manipulate. When mcount is in use this is a problem, as each mcount callsite in a module will be initialized to point to a module PLT, but since commit a6253579977e4c6f ftrace_make_nop() will assume that the callsite has been initialized to point to the special ftrace trampoline PLT, and ftrace_find_callable_addr() rejects other cases. This means that when ftrace tries to initialize a callsite via ftrace_make_nop(), the call to ftrace_find_callable_addr() will find that the `_mcount` stub is out-of-range and is not handled by the ftrace PLT, resulting in a splat: | ftrace_test: loading out-of-tree module taints kernel. | ftrace: no module PLT for _mcount | ------------[ ftrace bug ]------------ | ftrace failed to modify | [] 0xffff800029180014 | actual: 44:00:00:94 | Initializing ftrace call sites | ftrace record flags: 2000000 | (0) | expected tramp: ffff80000802eb3c | ------------[ cut here ]------------ | WARNING: CPU: 3 PID: 157 at kernel/trace/ftrace.c:2120 ftrace_bug+0x94/
osv:CVE-2022-50579
Kernel
Fixed versions: 5.10.150, 5.15.75, 5.19.17, 6.0.3
Complete source record
{
"id": "849dd5f659d0e83255ddb476840771bc530b5381b96b5cae55bbc93888d4e623",
"url": "https://osv.dev/vulnerability/CVE-2022-50579",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "arm64: ftrace: fix module PLTs with mcount",
"summary": "In the Linux kernel, the following vulnerability has been resolved: arm64: ftrace: fix module PLTs with mcount Li Huafei reports that mcount-based ftrace with module PLTs was broken by commit: a6253579977e4c6f (\"arm64: ftrace: consistently handle PLTs.\") When a module PLTs are used and a module is loaded sufficiently far away from the kernel, we'll create PLTs for any branches which are out-of-range. These are separate from the special ftrace trampoline PLTs, which the module PLT code doesn't directly manipulate. When mcount is in use this is a problem, as each mcount callsite in a module will be initialized to point to a module PLT, but since commit a6253579977e4c6f ftrace_make_nop() will assume that the callsite has been initialized to point to the special ftrace trampoline PLT, and ftrace_find_callable_addr() rejects other cases. This means that when ftrace tries to initialize a callsite via ftrace_make_nop(), the call to ftrace_find_callable_addr() will find that the `_mcount` stub is out-of-range and is not handled by the ftrace PLT, resulting in a splat: | ftrace_test: loading out-of-tree module taints kernel. | ftrace: no module PLT for _mcount | ------------[ ftrace bug ]------------ | ftrace failed to modify | [] 0xffff800029180014 | actual: 44:00:00:94 | Initializing ftrace call sites | ftrace record flags: 2000000 | (0) | expected tramp: ffff80000802eb3c | ------------[ cut here ]------------ | WARNING: CPU: 3 PID: 157 at kernel/trace/ftrace.c:2120 ftrace_bug+0x94/",
"evidence": "osv:CVE-2022-50579",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.10.150",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.75",
"evidence": "/affected/1/ranges"
},
{
"value": "5.19.17",
"evidence": "/affected/1/ranges"
},
{
"value": "6.0.3",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2022-50579",
"aliases": [
"CVE-2022-50579"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "bc28fde90937a920f7714ec4408269cac744f796"
},
{
"fixed": "657de36c72f57fa172a66b06f826b3f5bc56f42e"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "db73aa9466338ec821ed2a0b01721fe4d06876b1"
},
{
"fixed": "6c93b683cedaef745884cb9d554d02ed6266b897"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "a6253579977e4c6f7818eeb05bf2bc65678a7187"
},
{
"fixed": "0f77b6b2ba70d7c9d69ef39694e283ded9f8b5f2"
},
{
"fixed": "985432303cf7d4804fb2c2fdfbf0466a796d68c3"
},
{
"fixed": "8cfb08575c6d4585f1ce0deeb189e5c824776b04"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "5.10.124"
},
{
"fixed": "5.10.150"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "5.15.49"
},
{
"fixed": "5.15.75"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "5.18.6"
},
{
"fixed": "5.19"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "dcecc96ed16f73417de5550f384e348c9d56f279"
}
]
}
],
"versions": [
"v5.10.149",
"v5.10.148",
"v5.10.147",
"v5.10.146",
"v5.10.145",
"v5.10.144",
"v5.10.143",
"v5.10.142",
"v5.10.141",
"v5.10.140",
"v5.10.139",
"v5.10.138",
"v5.10.137",
"v5.10.136",
"v5.10.135",
"v5.10.134",
"v5.10.133",
"v5.10.132",
"v5.10.131",
"v5.10.130",
"v5.10.129",
"v5.10.128",
"v5.10.127",
"v5.10.126",
"v5.10.125",
"v5.10.124",
"v5.15.74",
"v5.15.73",
"v5.15.72",
"v5.15.71",
"v5.15.70",
"v5.15.69",
"v5.15.68",
"v5.15.67",
"v5.15.66",
"v5.15.65",
"v5.15.64",
"v5.15.63",
"v5.15.62",
"v5.15.61",
"v5.15.60",
"v5.15.59",
"v5.15.58",
"v5.15.57",
"v5.15.56",
"v5.15.55",
"v5.15.54",
"v5.15.53",
"v5.15.52",
"v5.15.51",
"v5.15.50",
"v5.15.49",
"v5.18.19",
"v5.18.18",
"v5.18.17",
"v5.18.16",
"v5.18.15",
"v5.18.14",
"v5.18.13",
"v5.18.12",
"v5.18.11",
"v5.18.10",
"v5.18.9",
"v5.18.8",
"v5.18.7",
"v5.18.6"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-50579.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "5.10.150"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.75"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "5.19.17"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.19.0"
},
{
"fixed": "6.0.3"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-50579.json"
}
}
],
"modified": "2026-10-08T02:49:26.036581315Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/0f77b6b2ba70d7c9d69ef39694e283ded9f8b5f2",
"https://git.kernel.org/stable/c/657de36c72f57fa172a66b06f826b3f5bc56f42e",
"https://git.kernel.org/stable/c/6c93b683cedaef745884cb9d554d02ed6266b897",
"https://git.kernel.org/stable/c/8cfb08575c6d4585f1ce0deeb189e5c824776b04",
"https://git.kernel.org/stable/c/985432303cf7d4804fb2c2fdfbf0466a796d68c3",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/50xxx/CVE-2022-50579.json",
"https://nvd.nist.gov/vuln/detail/CVE-2022-50579",
"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/2022/50xxx/CVE-2022-50579.json"
}
},
"related_cves": [
{
"value": "CVE-2022-50579",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 98299,
"published_at": "2025-10-22T13:23:32.242+00:00"
}