CVE-2026-23047

Source
https://cve.org/CVERecord?id=CVE-2026-23047
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23047.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2026-23047
Downstream
Published
2026-02-04T16:00:29.475Z
Modified
2026-03-20T12:47:21.566941Z
Summary
libceph: make calc_target() set t->paused, not just clear it
Details

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

libceph: make calc_target() set t->paused, not just clear it

Currently calc_target() clears t->paused if the request shouldn't be paused anymore, but doesn't ever set t->paused even though it's able to determine when the request should be paused. Setting t->paused is left to __submit_request() which is fine for regular requests but doesn't work for linger requests -- since _submitrequest() doesn't operate on linger requests, there is nowhere for lreq->t.paused to be set. One consequence of this is that watches don't get reestablished on paused -> unpaused transitions in cases where requests have been paused long enough for the (paused) unwatch request to time out and for the subsequent (re)watch request to enter the paused state. On top of the watch not getting reestablished, rbdreregisterwatch() gets stuck with rbddev->watchmutex held:

rbdregisterwatch _rbdregisterwatch cephosdcwatch lingerregcommitwait

It's waiting for lreq->regcommitwait to be completed, but for that to happen the respective request needs to end up on needresendlinger list and be kicked when requests are unpaused. There is no chance for that if the request in question is never marked paused in the first place.

The fact that rbddev->watchmutex remains taken out forever then prevents the image from getting unmapped -- "rbd unmap" would inevitably hang in D state on an attempt to grab the mutex.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/23xxx/CVE-2026-23047.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
922dab6134178cae317ae00de86376cba59f3147
Fixed
2b3329b3c29d9e188e40d902d5230c2d5989b940
Fixed
5d0dc83cb9a69c1d0bea58f1c430199b05f6b021
Fixed
4d3399c52e0e61720ae898f5a0b5b75d4460ae24
Fixed
4ebc711b738d139cabe2fc9e7e7749847676a342
Fixed
6f468f6ff233c6a81e0e761d9124e982903fe9a5
Fixed
5647d42c47b535573b63e073e91164d6a5bb058c
Fixed
c0fe2994f9a9d0a2ec9e42441ea5ba74b6a16176

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23047.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.7.0
Fixed
5.10.248
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.198
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.161
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.121
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.66
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.6

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23047.json"