CVE-2026-23047
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
04/02/2026
Last modified:
04/02/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
libceph: make calc_target() set t->paused, not just clear it<br />
<br />
Currently calc_target() clears t->paused if the request shouldn&#39;t be<br />
paused anymore, but doesn&#39;t ever set t->paused even though it&#39;s able to<br />
determine when the request should be paused. Setting t->paused is left<br />
to __submit_request() which is fine for regular requests but doesn&#39;t<br />
work for linger requests -- since __submit_request() doesn&#39;t operate<br />
on linger requests, there is nowhere for lreq->t.paused to be set.<br />
One consequence of this is that watches don&#39;t get reestablished on<br />
paused -> unpaused transitions in cases where requests have been paused<br />
long enough for the (paused) unwatch request to time out and for the<br />
subsequent (re)watch request to enter the paused state. On top of the<br />
watch not getting reestablished, rbd_reregister_watch() gets stuck with<br />
rbd_dev->watch_mutex held:<br />
<br />
rbd_register_watch<br />
__rbd_register_watch<br />
ceph_osdc_watch<br />
linger_reg_commit_wait<br />
<br />
It&#39;s waiting for lreq->reg_commit_wait to be completed, but for that to<br />
happen the respective request needs to end up on need_resend_linger list<br />
and be kicked when requests are unpaused. There is no chance for that<br />
if the request in question is never marked paused in the first place.<br />
<br />
The fact that rbd_dev->watch_mutex remains taken out forever then<br />
prevents the image from getting unmapped -- "rbd unmap" would inevitably<br />
hang in D state on an attempt to grab the mutex.
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/2b3329b3c29d9e188e40d902d5230c2d5989b940
- https://git.kernel.org/stable/c/4d3399c52e0e61720ae898f5a0b5b75d4460ae24
- https://git.kernel.org/stable/c/4ebc711b738d139cabe2fc9e7e7749847676a342
- https://git.kernel.org/stable/c/5647d42c47b535573b63e073e91164d6a5bb058c
- https://git.kernel.org/stable/c/5d0dc83cb9a69c1d0bea58f1c430199b05f6b021
- https://git.kernel.org/stable/c/6f468f6ff233c6a81e0e761d9124e982903fe9a5
- https://git.kernel.org/stable/c/c0fe2994f9a9d0a2ec9e42441ea5ba74b6a16176



