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

  wifi: cfg80211: don't free driver-owned scan requests

  When an interface goes down while a scan is running, cfg80211 completes
  the scan towards userspace and frees the …
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  wifi: cfg80211: don't free driver-owned scan requests

  When an interface goes down while a scan is running, cfg80211 completes
  the scan towards userspace and frees the …
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 4a58e7c38443154fce1b47910e1a9184f65c5d72 <
    e8c75736cfd0c6c87562cda2312e3fe5e2227955
  - >-
    Linux >= 4a58e7c38443154fce1b47910e1a9184f65c5d72 <
    cf6da29d17994865f73ca70976495ea856909c63
  - >-
    Linux >= 4a58e7c38443154fce1b47910e1a9184f65c5d72 <
    dab68a74e90b8e07f08ed9deaa5884857a3cfe89
  - Linux 3.14
published: '2026-10-06'
updated: '2026-10-06'
sourceUpdated: '2026-10-06T09:18:26.873'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-98341'
references:
  - url: 'https://git.kernel.org/stable/c/cf6da29d17994865f73ca70976495ea856909c63'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/dab68a74e90b8e07f08ed9deaa5884857a3cfe89'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/e8c75736cfd0c6c87562cda2312e3fe5e2227955'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-10-06T08:50:17.399Z'
---

## Overview

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

wifi: cfg80211: don't free driver-owned scan requests

When an interface goes down while a scan is running, cfg80211 completes
the scan towards userspace and frees the scan request. However, the
driver can be convinced that it owns the request, since the cancellation
is (intended to be) asynchronous.

The WARN_ON() in the netdev notifier was meant to catch this, but it's
not actually avoidable, so it triggers and we get a UAF in scan_done().

There doesn't seem to be a great way around it, so just track that the
driver is still convinced it owns the request, and then just free it on
completion if it was already cancelled. Also remove the warnings since
they can trigger in the intended architecture.

## Remediation

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