Description
In the Linux kernel, the following vulnerability has been resolved:

tracing: Fix union collision of module and refcnt for dynamic events

In 'struct trace_event_call', the 'module' pointer and the 'refcnt'
atomic variable share the same memory space in a union. For dynamic
events, the union member is 'refcnt', which acts as an active
reference counter.

When a dynamic event (such as kprobe, uprobe, fprobe, eprobe, or
wprobe) has a non-zero reference count (e.g. due to active event
triggers or perf attachments), its 'call->module' evaluates to a
small non-zero integer instead of NULL.

When filtering or setting events for a specific module (e.g., writing
':mod:<module>' to 'set_event'), the code in
'__ftrace_set_clr_event_nolock()' and 'update_event_fields()' reads
'call->module' directly without checking whether the event is dynamic.
This causes the kernel to treat the small integer (refcnt) as a
'struct module' pointer, leading to a NULL/invalid pointer dereference
(Oops) when dereferencing the module name.

Fix this by ensuring that the 'TRACE_EVENT_FL_DYNAMIC' flag is checked
before treating 'call->module' as a valid pointer in these code paths.
Published: 2026-08-10
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A union collision in the Linux kernel’s tracing subsystem allows a dynamic event’s reference counter to be misinterpreted as a module pointer. When a file system or kernel call filters events by module name, the code mistakenly treats the small integer reference count as a valid module struct, causing an invalid pointer dereference and resulting in a kernel Oops. This bug can lead to a loss of system availability as the kernel crashes and requires a reboot.

Affected Systems

The vulnerability affects any Linux kernel version in which the struct trace_event_call implementation merges the module pointer and the refcnt atomic variable without guarding the dynamic event flag. All affected releases prior to the commit that introduced the fix are potentially impacted; specific version ranges are not provided in the available data.

Risk and Exploitability

The attack requires the ability to trigger a dynamic event such as a kprobe, uprobe, or similar, and then manipulate the tracing set_event interface to target a module name. The likelihood of exploitation is uncertain due to missing EPSS data, and the vulnerability is not listed in the CISA KEV catalog. The primary risk is a local kernel crash, which may be leveraged by a privileged attacker to disrupt services. Remote exploitation is unlikely without additional privilege escalation or kernel debugging access.

Generated by OpenCVE AI on August 10, 2026 at 14:34 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that includes the commit fixing the union collision
  • If an immediate update is not possible, restrict or disable the use of dynamic tracing events such as kprobe, uprobe, fprobe, eprobe, and wprobe until the patch is applied
  • Avoid configuring set_event filters that reference module names while the vulnerability is present

Generated by OpenCVE AI on August 10, 2026 at 14:34 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 10 Aug 2026 15:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-476

Mon, 10 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: tracing: Fix union collision of module and refcnt for dynamic events In 'struct trace_event_call', the 'module' pointer and the 'refcnt' atomic variable share the same memory space in a union. For dynamic events, the union member is 'refcnt', which acts as an active reference counter. When a dynamic event (such as kprobe, uprobe, fprobe, eprobe, or wprobe) has a non-zero reference count (e.g. due to active event triggers or perf attachments), its 'call->module' evaluates to a small non-zero integer instead of NULL. When filtering or setting events for a specific module (e.g., writing ':mod:<module>' to 'set_event'), the code in '__ftrace_set_clr_event_nolock()' and 'update_event_fields()' reads 'call->module' directly without checking whether the event is dynamic. This causes the kernel to treat the small integer (refcnt) as a 'struct module' pointer, leading to a NULL/invalid pointer dereference (Oops) when dereferencing the module name. Fix this by ensuring that the 'TRACE_EVENT_FL_DYNAMIC' flag is checked before treating 'call->module' as a valid pointer in these code paths.
Title tracing: Fix union collision of module and refcnt for dynamic events
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-10T11:59:44.417Z

Reserved: 2026-07-30T09:28:09.372Z

Link: CVE-2026-68174

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-10T17:45:04Z

Weaknesses