In the Linux kernel, the following vulnerability has been resolved:
fs/erofs/fileio: call erofs_onlinefolio_split() after bio_add_folio()
If bio_add_folio() fails (because it is full), erofs_fileio_scan_folio() needs to submit the I/O request via erofs_fileio_rq_submit() and allocate a new I/O request with an empty `struct bio`. Then it retries the bio_add_folio() call.
However, at this point, erofs_onlinefolio_split() has already been called which increments `folio->private`; the retry will call erofs_onlinefolio_split() again, but there will never be a matching erofs_onlinefolio_end() call. This leaves the folio locked forever and all waiters will be stuck in folio_wait_bit_common().
This bug has been added by commit ce63cb62d794 ("erofs: support unencoded inodes for fileio"), but was practically unreachable because there was room for 256 folios in the `struct bio` - until commit 9f74ae8c9ac9 ("erofs: shorten bvecs[] for file-backed mounts") which reduced the array capacity to 16 folios.
It was now trivial to trigger the bug by manually invoking readahead from userspace, e.g.:
posix_fadvise(fd, 0, st.st_size, POSIX_FADV_WILLNEED);
This should be fixed by invoking erofs_onlinefolio_split() only after bio_add_folio() has succeeded. This is safe: asynchronous completions invoking erofs_onlinefolio_end() will not unlock the folio because erofs_fileio_scan_folio() is still holding a reference to be released by erofs_onlinefolio_end() at the end.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade kernel-libbpf-develUpgrade kernel6.12-modules-extraUpgrade python3-perf6.12-debuginfoUpgrade kernel-toolsUpgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel-headersUpgrade bpftool-debuginfoUpgrade kernel-livepatch-6.12.29-33.102Upgrade perf6.12Upgrade kernel6.12-debuginfoUpgrade kernel-modules-extra-commonUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel-libbpf-staticUpgrade kernel-tools-develUpgrade kernel-tools-debuginfoUpgrade perf6.12-debuginfoUpgrade kernel-libbpf-debuginfoUpgrade kernel6.12Upgrade kernel-libbpfUpgrade python3-perf6.12Upgrade kernel-develUpgrade bpftool | Sep 9, 2025 | May 29, 2025 |
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Suse | — | Upgrade kernel-kvmsmall-vdsoUpgrade kernel-default-vdsoUpgrade kernel-sourceUpgrade kernel-64kbUpgrade kernel-zfcpdumpUpgrade kernel-azure-vdsoUpgrade kernel-obs-qaUpgrade kernel-kvmsmallUpgrade kernel-default-extraUpgrade kernel-source-azureUpgrade kernel-azure-develUpgrade kernel-default-develUpgrade kernel-macrosUpgrade kernel-default-livepatchUpgrade kernel-devel-azureUpgrade kernel-kvmsmall-develUpgrade kernel-64kb-develUpgrade kernel-azureUpgrade kernel-defaultUpgrade kernel-develUpgrade kernel-docsUpgrade kernel-symsUpgrade kernel-64kb-extraUpgrade kernel-azure-extraUpgrade kernel-source-vanillaUpgrade kernel-docs-html | Dec 5, 2025 | Dec 5, 2025 |
| Ubuntu | — | Upgrade linux-image-gcpUpgrade linux-image-oem-24.04Upgrade linux-image-6.14.0-1011-aws-64kUpgrade linux-image-oem-24.04cUpgrade linux-image-6.14.0-1010-realtimeUpgrade linux-image-realtimeUpgrade linux-image-6.14.0-1010-oemUpgrade linux-image-6.14.0-1014-gcp-64kUpgrade linux-image-oracleUpgrade linux-image-awsUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.14.0-1011-oracle-64kUpgrade linux-image-6.14.0-28-generic-64kUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.14.0-28-genericUpgrade linux-image-oem-6.14Upgrade linux-image-6.14.0-1010-azureUpgrade linux-image-6.14.0-1014-gcpUpgrade linux-image-generic-64k-6.14Upgrade linux-image-aws-64kUpgrade linux-image-oracle-6.14Upgrade linux-image-virtualUpgrade linux-image-6.14.0-1011-awsUpgrade linux-image-aws-64k-6.14Upgrade linux-image-oracle-64k-6.14Upgrade linux-image-gcp-64k-6.14Upgrade linux-image-generic-64kUpgrade linux-image-raspi-6.14Upgrade linux-image-generic-6.14Upgrade linux-image-azure-6.14Upgrade linux-image-oracle-64kUpgrade linux-image-6.14.0-1011-oracleUpgrade linux-image-realtime-6.14Upgrade linux-image-oem-24.04aUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-raspiUpgrade linux-image-gcp-64kUpgrade linux-image-aws-6.14Upgrade linux-image-genericUpgrade linux-image-virtual-6.14Upgrade linux-image-6.14.0-1012-raspiUpgrade linux-image-azureUpgrade linux-image-gcp-6.14 | Jun 26, 2025 | May 29, 2025 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub