CVE-2026-31552
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
24/04/2026
Last modified:
27/04/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
wifi: wlcore: Return -ENOMEM instead of -EAGAIN if there is not enough headroom<br />
<br />
Since upstream commit e75665dd0968 ("wifi: wlcore: ensure skb headroom<br />
before skb_push"), wl1271_tx_allocate() and with it<br />
wl1271_prepare_tx_frame() returns -EAGAIN if pskb_expand_head() fails.<br />
However, in wlcore_tx_work_locked(), a return value of -EAGAIN from<br />
wl1271_prepare_tx_frame() is interpreted as the aggregation buffer being<br />
full. This causes the code to flush the buffer, put the skb back at the<br />
head of the queue, and immediately retry the same skb in a tight while<br />
loop.<br />
<br />
Because wlcore_tx_work_locked() holds wl->mutex, and the retry happens<br />
immediately with GFP_ATOMIC, this will result in an infinite loop and a<br />
CPU soft lockup. Return -ENOMEM instead so the packet is dropped and<br />
the loop terminates.<br />
<br />
The problem was found by an experimental code review agent based on<br />
gemini-3.1-pro while reviewing backports into v6.18.y.
Impact
Base Score 3.x
7.50
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10.250 (including) | 5.10.253 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.200 (including) | 5.15.203 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.163 (including) | 6.1.167 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6.124 (including) | 6.6.130 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.12.70 (including) | 6.12.78 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.18.10 (including) | 6.18.20 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19.1 (including) | 6.19.10 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.19:-:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/12f9eef39e49716c763714bfda835a733d5f6dea
- https://git.kernel.org/stable/c/46c670ff1ff466e5eccb3940f726586473dc053c
- https://git.kernel.org/stable/c/980f793645540ca7a6318165cc12f49d5febeb99
- https://git.kernel.org/stable/c/a6dc74209462c4fe5a88718d2f3a5286886081c8
- https://git.kernel.org/stable/c/ceb46b40b021d21911ff8608ce4ed33c1264ad2f
- https://git.kernel.org/stable/c/cfa64e2b3717be1da7c4c1aff7268a009e8c1610
- https://git.kernel.org/stable/c/deb353d9bb009638b7762cae2d0b6e8fdbb41a69
- https://git.kernel.org/stable/c/f2c06d718a7b85cbc59ceaa2ff3f46b178ac709c



