CVE-2026-23238

romfs: check sb_set_blocksize() return value

published March 4, 2026

CVSS
—
EPSS
0%
Percentile
9.5
In the wild
Unconfirmed
What it is

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

romfs: check sb_set_blocksize() return value

romfs_fill_super() ignores the return value of sb_set_blocksize(), which

can fail if the requested block size is incompatible with the block

device's configuration.

This can be triggered by setting a loop device's block size larger than

PAGE_SIZE using ioctl(LOOP_SET_BLOCK_SIZE, 32768), then mounting a romfs

filesystem on that device.

When sb_set_blocksize(sb, ROMBSIZE) is called with ROMBSIZE=4096 but the

device has logical_block_size=32768, bdev_validate_blocksize() fails

because the requested size is smaller than the device's logical block

size. sb_set_blocksize() returns 0 (failure), but romfs ignores this and

continues mounting.

The superblock's block size remains at the device's logical block size

(32768). Later, when sb_bread() attempts I/O with this oversized block

size, it triggers a kernel BUG in folio_set_bh():

kernel BUG at fs/buffer.c:1582!

BUG_ON(size > PAGE_SIZE);

Fix by checking the return value of sb_set_blocksize() and failing the

mount with -EINVAL if it returns 0.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00201 · 9.5th percentile
Published
2026-03-04T14:38Z
EPSS history
Timeline
  • 04 MAR 14:38Z
    romfs: check sb_set_blocksize() return value
    cvelistv5