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

  wifi: mac80211: fix fils_discovery double free on alloc failure

  ieee80211_set_fils_discovery() calls kfree_rcu() on the old template
  before allocating the replacement.…
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  wifi: mac80211: fix fils_discovery double free on alloc failure

  ieee80211_set_fils_discovery() calls kfree_rcu() on the old template
  before allocating the replacement.…
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'
published: '2026-08-05'
updated: '2026-08-08'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-64570'
references:
  - url: 'https://git.kernel.org/stable/c/1981fba71797ec95e6755fb882cad88899a2a84f'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/286e52a799fa158bdbd77da1426c4d93f9a6e7ad'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/5baaa1042f71dd4b8e418f2cdd516808702d229b'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/e2c55079155a953db669ca1986a985fa286bad95'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
epss: 0.00175
epssPercentile: 0.06183
ingestedAt: '2026-08-08T20:29:49.242Z'
---

## Overview

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

wifi: mac80211: fix fils_discovery double free on alloc failure

ieee80211_set_fils_discovery() calls kfree_rcu() on the old template
before allocating the replacement. If the kzalloc() then fails, it
returns -ENOMEM while link->u.ap.fils_discovery still points at the
object already queued for freeing. A later update or AP teardown
(ieee80211_stop_ap()) re-queues that same rcu_head; the second free is
caught by KASAN when the RCU sheaf is processed in softirq:

  BUG: KASAN: double-free in rcu_free_sheaf (mm/slub.c:5850)
  Free of addr ffff88800c065280 by task swapper/0/0
   ...
   __rcu_free_sheaf_prepare (mm/slub.c:2634 mm/slub.c:2940)
   rcu_free_sheaf (mm/slub.c:5850)
   rcu_core (kernel/rcu/tree.c:2617 kernel/rcu/tree.c:2869)
   handle_softirqs (kernel/softirq.c:622)
  The buggy address belongs to the cache kmalloc-96 of size 96

Queue the old object for kfree_rcu() only after the new one is published,
matching ieee80211_set_probe_resp() and ieee80211_set_s1g_short_beacon().

## Remediation

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