---
id: CVE-2026-68409
title: 'wifi: mac80211: defer link RX stats percpu free to RCU'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  wifi: mac80211: defer link RX stats percpu free to RCU

  sta_remove_link() frees a removed MLO link's RX stats percpu buffer right
  away, but defers only the link contain…
severity: high
cvss: 8.8
cvssVector: 'CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= c71420db653aba30a234d1e4cf86dde376e604fa <
    2aa1789880fa5e41049b0f6a74a4fc2fa1997610
  - >-
    Linux >= c71420db653aba30a234d1e4cf86dde376e604fa <
    a03fceae0c65b31ce31840dac5e26684ceecb65b
  - >-
    Linux >= c71420db653aba30a234d1e4cf86dde376e604fa <
    aa2eb62525188269cdd402a583b9a8ed94657ff0
  - Linux 6.0
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: total
  timestamp: '2026-10-16T15:48:24.807491Z'
published: '2026-08-10'
updated: '2026-10-16'
sourceUpdated: '2026-10-16T15:53:12.331Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-68409'
references:
  - url: 'https://git.kernel.org/stable/c/2aa1789880fa5e41049b0f6a74a4fc2fa1997610'
  - url: 'https://git.kernel.org/stable/c/a03fceae0c65b31ce31840dac5e26684ceecb65b'
  - url: 'https://git.kernel.org/stable/c/aa2eb62525188269cdd402a583b9a8ed94657ff0'
tags:
  - cve.org
epss: 0.00239
epssPercentile: 0.13916
ingestedAt: '2026-10-16T17:24:46.865Z'
---

## Overview

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

wifi: mac80211: defer link RX stats percpu free to RCU

sta_remove_link() frees a removed MLO link's RX stats percpu buffer right
away, but defers only the link container to RCU:

	sta_info_free_link(&alloc->info);
	kfree_rcu(alloc, rcu_head);

The RX fast path reads link_sta under rcu_read_lock and writes the percpu
stats. A reader that resolved link_sta before the removal keeps the
pointer. The container stays alive from the kfree_rcu, so the read still
works. But the percpu block it points to is already freed. This needs
uses_rss. That is when pcpu_rx_stats exists.

The full STA teardown frees the deflink stats only after
synchronize_net(). The link removal path had no such barrier. The race is
hard to win in practice, but the free should still wait for RCU.

Free the link together with its data from a single RCU callback, so the
percpu block is reclaimed only after readers drain.

## Affected

- `Linux >= c71420db653aba30a234d1e4cf86dde376e604fa < 2aa1789880fa5e41049b0f6a74a4fc2fa1997610`
- `Linux >= c71420db653aba30a234d1e4cf86dde376e604fa < a03fceae0c65b31ce31840dac5e26684ceecb65b`
- `Linux >= c71420db653aba30a234d1e4cf86dde376e604fa < aa2eb62525188269cdd402a583b9a8ed94657ff0`
- `Linux 6.0`

## Remediation

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