CVE-2026-46196

tracepoint: balance regfunc() on func_add() failure in tracepoint_add_func()

MEDIUM
5.5
CVSS Score
Published: May 28, 2026 at 09:36 AM UTC
Updated: October 15, 2026 at 02:19 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.1%

Description

In the Linux kernel, the following vulnerability has been resolved: tracepoint: balance regfunc() on func_add() failure in tracepoint_add_func() When a tracepoint goes through the 0 -> 1 transition, tracepoint_add_func() invokes the subsystem's ext->regfunc() before attempting to install the new probe via func_add(). If func_add() then fails (for example, when allocate_probes() cannot allocate a new probe array under memory pressure and returns -ENOMEM), the function returns the error without calling the matching ext->unregfunc(), leaving the side effects of regfunc() behind with no installed probe to justify them. For syscall tracepoints this is particularly unpleasant: syscall_regfunc() bumps sys_tracepoint_refcount and sets SYSCALL_TRACEPOINT on every task. After a leaked failure, the refcount is stuck at a non-zero value with no consumer, and every task continues paying the syscall trace entry/exit overhead until reboot. Other subsystems providing regfunc()/unregfunc() pairs exhibit similarly scoped persistent state. Mirror the existing 1 -> 0 cleanup and call ext->unregfunc() in the func_add() error path, gated on the same condition used there so the unwind is symmetric with the registration.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

4.10 ≤ v < 6.6.1406.13 ≤ v < 6.18.306.19 ≤ v < 7.0.76.7 ≤ v < 6.12.884.108cf868affdc459beee1a941df0cfaba1673740e3
Vendor states this is fixed in 247ed8a969f981bfba3112fd4bb441eaa6cef59c (fixed)
Vendor states this is fixed in 2c5b8eeea006eb694c81631cd5713d494b80be90 (fixed)
Vendor states this is fixed in 342829e042ac00f3d68d442ea92873fb6683f494 (fixed)
Vendor states this is fixed in 36ff362235307af95152d510b53c2d9b8773a342 (fixed)
Vendor states this is fixed in 4f1756d043e56ea2e9a6c858fb290a0cf6fc2251 (fixed)
Vendor states this is fixed in 5787052e5f69beb649f3d6a80a8aa37d9e683e4e (fixed)
Vendor states this is fixed in 7bcadb3c2bc1cf60690e931aadd35fb7bd646a49 (fixed)
Vendor states this is fixed in fad217e16fded7f3c09f8637b0f6a224d58b5f2e (fixed)
Vendor states this is fixed in 4.10 (unaffected)
Vendor states this is fixed in 5.10.259 (unaffected)
Vendor states this is fixed in 5.15.210 (unaffected)
Vendor states this is fixed in 6.1.176 (unaffected)
Vendor states this is fixed in 6.12.88 (unaffected)
Vendor states this is fixed in 6.18.30 (unaffected)
Vendor states this is fixed in 6.6.140 (unaffected)
Vendor states this is fixed in 7.0.7 (unaffected)
Vendor states this is fixed in 7.1 (unaffected)

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
NVD-CWE-noinfo

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card