CVE-2026-46196

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

State
Published
Severity
Not scored
Published
May 28, 2026
Updated
Oct 15, 2026
Reserved
May 13, 2026

Read the record on cve.org

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 8cf868affdc459beee1a941df0cfaba1673740e3 to before 5787052e5f69beb649f3d6a80a8aa37d9e683e4eAffected
  • 8cf868affdc459beee1a941df0cfaba1673740e3 to before 4f1756d043e56ea2e9a6c858fb290a0cf6fc2251Affected
  • 8cf868affdc459beee1a941df0cfaba1673740e3 to before 36ff362235307af95152d510b53c2d9b8773a342Affected
  • 8cf868affdc459beee1a941df0cfaba1673740e3 to before 247ed8a969f981bfba3112fd4bb441eaa6cef59cAffected
  • 8cf868affdc459beee1a941df0cfaba1673740e3 to before 7bcadb3c2bc1cf60690e931aadd35fb7bd646a49Affected
  • 8cf868affdc459beee1a941df0cfaba1673740e3 to before 2c5b8eeea006eb694c81631cd5713d494b80be90Affected
  • 8cf868affdc459beee1a941df0cfaba1673740e3 to before 342829e042ac00f3d68d442ea92873fb6683f494Affected
  • 8cf868affdc459beee1a941df0cfaba1673740e3 to before fad217e16fded7f3c09f8637b0f6a224d58b5f2eAffected
LinuxLinux
  • 4.10Affected
  • before 4.10Not affected
  • 5.10.259 through 5.10.*Not affected
  • 5.15.210 through 5.15.*Not affected
  • 6.1.176 through 6.1.*Not affected
  • 6.6.140 through 6.6.*Not affected
  • 6.12.88 through 6.12.*Not affected
  • 6.18.30 through 6.18.*Not affected
  • 7.0.7 through 7.0.*Not affected
  • 7.1 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.