---
id: CVE-2026-99201
title: 'netlink: avoid hashing the network namespace pointer'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  netlink: avoid hashing the network namespace pointer

  The netlink rhashtable key includes a raw struct net pointer and a
  user-controlled port ID. Both /proc/net/netlink…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= c428ecd1a21f1457ca3beb4df71b8a079c410e41 <
    bdd55b8a8acbf6b4840ab420eb6a63774bf4593b
  - >-
    Linux >= c428ecd1a21f1457ca3beb4df71b8a079c410e41 <
    078deff25f8a849ecd1c3fe17b1e473b1cf44f28
  - >-
    Linux >= c428ecd1a21f1457ca3beb4df71b8a079c410e41 <
    f88bb3606e4bd11ee035b682cddc2999e604609a
  - Linux 4.1
published: '2026-10-28'
updated: '2026-10-28'
sourceUpdated: '2026-10-28T10:35:56.069Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-99201'
references:
  - url: 'https://git.kernel.org/stable/c/bdd55b8a8acbf6b4840ab420eb6a63774bf4593b'
  - url: 'https://git.kernel.org/stable/c/078deff25f8a849ecd1c3fe17b1e473b1cf44f28'
  - url: 'https://git.kernel.org/stable/c/f88bb3606e4bd11ee035b682cddc2999e604609a'
tags:
  - cve.org
ingestedAt: '2026-10-28T11:09:40.364Z'
---

## Overview

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

netlink: avoid hashing the network namespace pointer

The netlink rhashtable key includes a raw struct net pointer and a
user-controlled port ID. Both /proc/net/netlink and socket diagnostics
expose the table's bucket order. By binding and rebinding chosen
NETLINK_USERSOCK port IDs, an unprivileged reader can distinguish equal
buckets and recover the low bits of the Jenkins hash. Its 32-bit seed
and the limited set of kernel-image slides can then be searched offline
to recover the address of init_net.

Use the namespace's unique, non-address net_cookie in the comparison
key instead. It is assigned before the per-net initializers run and
remains unchanged for the namespace's lifetime. The lookup key and
object hash are still built by netlink_compare_arg_init(), keeping
lookup, insertion, removal and rehashing consistent while preserving
namespace separation. Neither public table walker needs to change.

Reading the socket's namespace cookie in netlink_compare() is safe
under RCU, including during namespace teardown. netlink_release()
removes the socket from the hash table and defers its final put with
call_rcu(). cleanup_net() runs the per-net exit methods and waits for
outstanding RCU callbacks with rcu_barrier() before freeing namespace
storage.

Unlike ns.ns_id, net_cookie is also available and initialized during
setup_net() in older stable kernels, making the change straightforward
to backport to v5.15 and later.

## Affected

- `Linux >= c428ecd1a21f1457ca3beb4df71b8a079c410e41 < bdd55b8a8acbf6b4840ab420eb6a63774bf4593b`
- `Linux >= c428ecd1a21f1457ca3beb4df71b8a079c410e41 < 078deff25f8a849ecd1c3fe17b1e473b1cf44f28`
- `Linux >= c428ecd1a21f1457ca3beb4df71b8a079c410e41 < f88bb3606e4bd11ee035b682cddc2999e604609a`
- `Linux 4.1`

## Remediation

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