HIGH
bcmasp WoL IRQ Double-Free
CVE-2026-31506
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: net: bcmasp: fix double free of WoL irq We do not need to free wol_irq since it was instantiated with devm_request_irq(). So devres will free for us.
02KernelScan AI Analysis
Risk summary
A double-free vulnerability in the Broadcom ASP2 network driver could cause kernel crashes or memory corruption when the driver is unloaded or encounters initialization failures. While this requires administrative access to trigger, it could be exploited by malicious local users with sufficient privileges to cause denial of service or potentially escalate privileges through memory corruption.
Vulnerability analysis
Root Cause: The bcmasp driver was incorrectly calling free_irq() on a Wake-on-LAN interrupt that was allocated using devm_request_irq(). When using the device-managed resource allocation function devm_request_irq(), the interrupt is automatically freed when the device is removed or the driver is unloaded. The manual free_irq() call in bcmasp_wol_irq_destroy() created a double-free condition where the same IRQ resource would be freed twice - once manually and once automatically by the device resource management system.
Attack Surface: This vulnerability affects systems using Broadcom ASP2 network controllers with Wake-on-LAN functionality enabled. The double-free occurs during driver cleanup operations (module unload, device removal, or probe failure), making it primarily a local attack surface issue that requires administrative privileges to trigger through driver management operations.
Fix Mechanism: The fix removes the manual IRQ cleanup code entirely. The bcmasp_wol_irq_destroy() function is deleted, and calls to it are removed from both the error cleanup path in bcmasp_probe() and the normal cleanup path in bcmasp_remove(). This allows the device resource management system to handle the IRQ cleanup automatically and safely.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 6.12 | 6.12.80 | 121a6ad9cd42 |
| 6.18 | 6.18.21 | 9e5f5c07cc7d |
| 6.19 | 6.19.11 | 8a30509ce6a2 |
| mainline | 7.0 | cbfa5be2bf64 |