CVE-2026-89646

CVE-2026-89646

High · published September 12, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
6.4
In the wild
Unconfirmed
What it is

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

ceph: fix leaked inode reference on writeback abort at umount

ceph_dirty_folio() takes a wrbuffer claim on each newly dirtied folio: it

bumps i_wrbuffer_ref (taking an ihold() on the 0->1 transition) and

attaches the snap_context to folio->private. That claim is released only

by ceph_put_wrbuffer_cap_refs(), which for a submitted write runs from

writepages_finish().

In ceph_submit_write(), if ceph_inc_osd_stopping_blocker() fails -- which

happens during umount -- the request is aborted before submission: the

already-collected folios are only redirtied and unlocked, so

writepages_finish() never runs and the claim is leaked.

redirty_page_for_writepage() -> folio_redirty_for_writepage() ->

filemap_dirty_folio() sets PG_dirty directly and does not go through

->dirty_folio, so ceph_dirty_folio() is not re-entered to rebalance it.

Because every subsequent writeback also fails the osd_stopping_blocker,

i_wrbuffer_ref never returns to 0, the ihold() is never dropped, and the

inode cannot be evicted:

VFS: Busy inodes after unmount of ceph

kernel BUG at fs/super.c:650!

Release the orphaned claim in the abort path before redirtying, via

ceph_undo_wrbuffer_claim(): detach the snap_context, drop the wrbuffer

reference (letting i_wrbuffer_ref reach 0 and iput() the inode), and drop

the snap_context reference -- i.e. do what writepages_finish() would have

done for these never-submitted folios.

Only the locked_pages entries are undone; folios still in the fbatch were

never dirty-cleared by this call (folio_clear_dirty_for_io() is the

ownership-transfer point, and a successful move NULLs the fbatch slot), so

they hold no claim this call owns.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00173 · 6.4th percentile
Published
2026-09-12T00:19Z
References (3)
EPSS history
Timeline
  • 13 SEP 03:23Z
    EPSS moved — → 0%
    epss
  • 11 SEP 19:45Z
    ceph: fix leaked inode reference on writeback abort at umount
    cvelistv5