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

  bpf: Preserve special fields in recycled rhtab elements

  rhtab_map_update_elem() initializes special fields after obtaining an
  element from bpf_mem_cache_alloc()
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  bpf: Preserve special fields in recycled rhtab elements

  rhtab_map_update_elem() initializes special fields after obtaining an
  element from bpf_mem_cache_alloc(). The a…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 6905f8601298ecd2d1932a4b4849bf265201118e <
    6a5266b8288216b86602ff687d528abfb066dfd8
  - >-
    Linux >= 6905f8601298ecd2d1932a4b4849bf265201118e <
    5df46ddcb7b36878c1b691e9057a0509042a2567
  - Linux 7.2
published: '2026-09-25'
updated: '2026-09-25'
sourceUpdated: '2026-09-25T11:17:32.340'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-98036'
references:
  - url: 'https://git.kernel.org/stable/c/5df46ddcb7b36878c1b691e9057a0509042a2567'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/6a5266b8288216b86602ff687d528abfb066dfd8'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-25T11:06:38.850Z'
---

## Overview

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

bpf: Preserve special fields in recycled rhtab elements

rhtab_map_update_elem() initializes special fields after obtaining an
element from bpf_mem_cache_alloc(). The allocator can return a fresh,
zeroed unit, or recycle one from its RCU-pending lists before the
registered destructor has run.

A BPF program can retain a map-value pointer after deleting its element
and initialize and arm a timer through that pointer. If the deleted unit
is recycled, check_and_init_map_value() clears the only pointer to the
timer. Neither a later deletion nor rhtab_mem_dtor() can then cancel it,
and the callback can run with its key and value pointing into freed memory.

Do not reinitialize special fields on insertion. Fresh allocator units are
already zeroed. For recycled units, the special fields are ownership state
that must remain visible to the eventual destructor. copy_map_value()
already skips those fields, matching the non-preallocated hash-map path and
the lifecycle established by commit 275c30bcee66 ("bpf: Don't reinit map
value in prealloc_lru_pop").

[ kkd: Split out the fix and rewrote the commit log ]

## Remediation

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