KernelScan.io

HIGH

cfg80211 PMSR Race

CVE-2026-31548

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI4.7MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: wifi: cfg80211: cancel pmsr_free_wk in cfg80211_pmsr_wdev_down When the nl80211 socket that originated a PMSR request is closed, cfg80211_release_pmsr() sets the request's nl_portid to zero and schedules pmsr_free_wk to process the abort asynchronously. If the interface is concurrently torn down before that work runs, cfg80211_pmsr_wdev_down() calls cfg80211_pmsr_process_abort() directly. However, the already- scheduled pmsr_free_wk work item remains pending and may run after the interface has been removed from the driver. This could cause the driver's abort_pmsr callback to operate on a torn-down interface, leading to undefined behavior and potential crashes. Cancel pmsr_free_wk synchronously in cfg80211_pmsr_wdev_down() before calling cfg80211_pmsr_process_abort(). This ensures any pending or in-progress work is drained before interface teardown proceeds, preventing the work from invoking the driver abort callback after the interface is gone.

02

Engine v0.2.0

Risk summary

A race condition in WiFi peer measurement (PMSR) handling can cause driver callbacks to operate on torn-down interfaces. This affects systems with WiFi hardware supporting FTM/PMSR capabilities and requires administrative privileges to trigger.

Affectednet/wireless/pmsr.c (cfg80211)

Vulnerability analysis

The vulnerability stems from a race between nl80211 socket closure (which schedules asynchronous PMSR abort work) and WiFi interface teardown (which processes aborts directly). If interface teardown occurs after work scheduling but before execution, the scheduled work can invoke driver callbacks on a destroyed interface, leading to undefined behavior and potential crashes. The fix adds synchronous work cancellation in cfg80211_pmsr_wdev_down() to ensure pending work is drained before interface removal proceeds.

03

BranchFixed inPatch commit
6.16.1.16728d3551f8d8c
6.126.12.78d32c07ef1880
6.186.18.20a1b7a843f12a
6.196.19.1072b7ea786b8e
6.66.6.13037e776e2e0a5
mainline7.06dccbc9f3e1d