VYPR
Unrated severityNVD Advisory· Published Mar 25, 2026· Updated Apr 18, 2026

CVE-2026-23281

CVE-2026-23281

Description

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

wifi: libertas: fix use-after-free in lbs_free_adapter()

The lbs_free_adapter() function uses timer_delete() (non-synchronous) for both command_timer and tx_lockup_timer before the structure is freed. This is incorrect because timer_delete() does not wait for any running timer callback to complete.

If a timer callback is executing when lbs_free_adapter() is called, the callback will access freed memory since lbs_cfg_free() frees the containing structure immediately after lbs_free_adapter() returns.

Both timer callbacks (lbs_cmd_timeout_handler and lbs_tx_lockup_handler) access priv->driver_lock, priv->cur_cmd, priv->dev, and other fields, which would all be use-after-free violations.

Use timer_delete_sync() instead to ensure any running timer callback has completed before returning.

This bug was introduced in commit 8f641d93c38a ("libertas: detect TX lockups and reset hardware") where del_timer() was used instead of del_timer_sync() in the cleanup path. The command_timer has had the same issue since the driver was first written.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Use-after-free in libertas wifi driver due to non-synchronous timer deletion; fixed by using timer_delete_sync().

Root Cause The lbs_free_adapter() function in the libertas WiFi driver used timer_delete() (non-synchronous) to cancel command_timer and tx_lockup_timer before freeing the containing structure via lbs_cfg_free(). Because timer_delete() does not wait for a running callback to finish, a concurrently executing timer callback could access freed memory, leading to a use-after-free vulnerability [1].

Exploitation An attacker able to trigger device removal (e.g., via hot-unplug or module removal) while either timer is executing can cause the callbacks lbs_cmd_timeout_handler or lbs_tx_lockup_handler to dereference freed pointers such as priv->driver_lock, priv->cur_cmd, or priv->dev. Local access or crafted wireless conditions may be required to align timer execution with deallocation [2].

Impact Successful exploitation results in a use-after-free condition, which can lead to memory corruption, denial of service, or potential privilege escalation in a kernel context [3].

Mitigation The fix replaces timer_delete() with timer_delete_sync(), ensuring any running timer callback completes before the structure is freed. The patch has been backported to stable kernel trees [4]. Users should apply the latest kernel updates to mitigate this vulnerability.

AI Insight generated on May 18, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

2

Patches

0

No patches discovered yet.

Vulnerability mechanics

AI mechanics synthesis has not run for this CVE yet.

References

8

News mentions

0

No linked articles in our index yet.