Skip to content
Heist/ feed
Back to feed
UnratedFix available

arm64: ftrace: fix module PLTs with mcount

Type: advisorySources: OSV

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 source

Published 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"
}