---
id: "CVE-2026-99246"
kind: "vulnerability"
aliases: ["CVE-2026-99246"]
title: "Linux kernel TIPC: use-after-free in node reset trace dump"
severity: "unknown"
cvss: null
epss: null
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["kubernetes", "linux-kernel", "runtime", "self-hosted", "tipc"]
not_affected_if: ["non-linux", "tipc-not-loaded"]
published_at: "2026-11-03T12:17:31+00:00"
first_seen_at: "2026-11-03T12:20:38+00:00"
updated_at: "2026-11-03T12:23:02+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-99246", "first_seen_at": "2026-11-03T12:20:38+00:00"}]
---

# Linux kernel TIPC: use-after-free in node reset trace dump

The TIPC networking code in the Linux kernel can read a link structure after another thread has freed it, because a trace event dumps link data without holding the node lock. A local or network-reachable trigger can cause a kernel memory read of freed memory, which can crash the system or lead to code execution.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the running kernel version with `uname -r` and compare it against the fixed kernel releases in the kernel git history.
- Check whether the TIPC module is loaded with `lsmod | grep tipc`; if it is absent, the flaw is not reachable.

## Fix

- Apply the Linux kernel stable update that includes the commit 'tipc: protect node reset trace dump with node lock'; fixed versions are unknown from the sources.

## Timeline

- 2026-11-03T12:20:38+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-99246

## From the sources

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

tipc: protect node reset trace dump with node lock

The tipc_node_reset_links trace event asks tipc_node_dump() to walk the
node's link entries. Unlike the other node events that request link data,
this event runs without the node lock.

This permits bearer teardown to free a link while the trace callback is
dumping it:

  CPU 0                                CPU 1
  trace_tipc_node_reset_links()
    tipc_node_dump()
      l = n->links[0].link
                                       tipc_node_write_lock()
                                       kfree(l)
                                       n->links[0].link = NULL
                                       tipc_node_write_unlock()
      tipc_link_dump(l)

tipc_link_dump() then dereferences the stale pointer. KASAN reported:

  BUG: KASAN: slab-use-after-free in tipc_link_dump
  Read of size 4 by task poc/115
  Call Trace:
   tipc_link_dump+0x10cb/0x16b0
   tipc_node_dump+0x4bb/0x740
   trace_event_raw_event_tipc_node_class+0x258/0x360
   tipc_node_reset_links+0x14d/0x1a0
   tipc_rcv+0x13f5/0x3030
   tipc_udp_recv+0x4e3/0x670
  Allocated by task 0:
   tipc_link_create+0x1e1/0x1020
   tipc_node_check_dest+0x7d2/0x11a0
   tipc_disc_rcv+0xdbf/0x1430
  Freed by task 89:
   kfree+0x131/0x3c0
   tipc_node_link_down+0x267/0x4b0
   tipc_node_delete_links+0xec/0x160
   bearer_disable+0x107/0x260

Take the node write lock around the trace event. This serializes the
dump against tipc_node_link_down(delete=true), which frees the link
under the same write lock.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
