---
id: CVE-2026-97940
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ipv6: fix fib6 walker UAF on seq stop

  ipv6_route_iter_active() treats a walker in FWS_U at the table root as
  already unlinked
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ipv6: fix fib6 walker UAF on seq stop

  ipv6_route_iter_active() treats a walker in FWS_U at the table root as
  already unlinked. fib6_del_route() can move a still-linked…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 8d2ca1d7b5c3e63b3a8a81ae99015b615c5f2bf7 <
    0eede1689610e9eeaf729ba86fd1321799eb91a0
  - >-
    Linux >= 8d2ca1d7b5c3e63b3a8a81ae99015b615c5f2bf7 <
    b89b691dd00bf39b9ba39ab9446f8c62f419fa7b
  - >-
    Linux >= 8d2ca1d7b5c3e63b3a8a81ae99015b615c5f2bf7 <
    4553cfafa8d05c4ce20b1d18f79d9bb3b303fc02
  - >-
    Linux >= 8d2ca1d7b5c3e63b3a8a81ae99015b615c5f2bf7 <
    19b4ed644d68098cc62ab612727f40d30f43476c
  - Linux 3.13
published: '2026-09-25'
updated: '2026-09-25'
sourceUpdated: '2026-09-25T15:18:02.713'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-97940'
references:
  - url: 'https://git.kernel.org/stable/c/0eede1689610e9eeaf729ba86fd1321799eb91a0'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/19b4ed644d68098cc62ab612727f40d30f43476c'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/4553cfafa8d05c4ce20b1d18f79d9bb3b303fc02'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/b89b691dd00bf39b9ba39ab9446f8c62f419fa7b'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-25T11:06:38.882Z'
---

## Overview

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

ipv6: fix fib6 walker UAF on seq stop

ipv6_route_iter_active() treats a walker in FWS_U at the table root as
already unlinked. fib6_del_route() can move a still-linked walker into
that same state when the current leaf is the last route at the root,
so ipv6_route_native_seq_stop() skips fib6_walker_unlink(). The seq
private object can then be freed while it remains on
net->ipv6.fib6_walkers. A later route deletion walks the dangling list
and uses the freed walker.

Use the list head as membership state and reinitialize it when
unlinking. Keep the existing w->node check so a never-started iterator
with a zeroed private object is not treated as linked.

The same stop helper is used by /proc/net/ipv6_route and by the BPF
ipv6_route iterator. The BPF show path only widens the race.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
