CVE-2026-23356
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
25/03/2026
Last modified:
24/04/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
drbd: fix "LOGIC BUG" in drbd_al_begin_io_nonblock()<br />
<br />
Even though we check that we "should" be able to do lc_get_cumulative()<br />
while holding the device->al_lock spinlock, it may still fail,<br />
if some other code path decided to do lc_try_lock() with bad timing.<br />
<br />
If that happened, we logged "LOGIC BUG for enr=...",<br />
but still did not return an error.<br />
<br />
The rest of the code now assumed that this request has references<br />
for the relevant activity log extents.<br />
<br />
The implcations are that during an active resync, mutual exclusivity of<br />
resync versus application IO is not guaranteed. And a potential crash<br />
at this point may not realizs that these extents could have been target<br />
of in-flight IO and would need to be resynced just in case.<br />
<br />
Also, once the request completes, it will give up activity log references it<br />
does not even hold, which will trigger a BUG_ON(refcnt == 0) in lc_put().<br />
<br />
Fix:<br />
<br />
Do not crash the kernel for a condition that is harmless during normal<br />
operation: also catch "e->refcnt == 0", not only "e == NULL"<br />
when being noisy about "al_complete_io() called on inactive extent %u\n".<br />
<br />
And do not try to be smart and "guess" whether something will work, then<br />
be surprised when it does not.<br />
Deal with the fact that it may or may not work. If it does not, remember a<br />
possible "partially in activity log" state (only possible for requests that<br />
cross extent boundaries), and return an error code from<br />
drbd_al_begin_io_nonblock().<br />
<br />
A latter call for the same request will then resume from where we left off.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.10.1 (including) | 5.10.253 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.203 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.167 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.130 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.77 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.18.17 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (including) | 6.19.7 (excluding) |
| cpe:2.3:o:linux:linux_kernel:3.10:-:*:*:*:*:*:* | ||
| 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/7752569fc78e89794ce28946529850282233f99d
- https://git.kernel.org/stable/c/933d161baa3794547adee621c0bf52cbf2c1b3cd
- https://git.kernel.org/stable/c/ab140365fb62c0bdab22b2f516aff563b2559e3b
- https://git.kernel.org/stable/c/cf01aa6288e1190f89865e765056e2a9d8190639
- https://git.kernel.org/stable/c/d1ef3aed4df2ef1fe46befd8f2da9a6ec5445508
- https://git.kernel.org/stable/c/e91d8d6565b7819d13dab21d4dbed5b45efba59b
- https://git.kernel.org/stable/c/eef1390125b660b8b61f9f227a03bb9c5e6d36a5
- https://git.kernel.org/stable/c/f558e5404a72054b525dced1a0c66aa95a144153



