CVE-2026-89490 json
ocfs2: fix readdir position truncation on 32-bit kernels
published 2026-09-11 58 d ago modified 2026-10-19 20 d ago also EUVD-2026-76396
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 7%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
ocfs2: fix readdir position truncation on 32-bit kernels
In ocfs2_dir_foreach_blk_el(), the directory cookie position is rebuilt with
ctx->pos = (ctx->pos & ~(sb->s_blocksize - 1)) | offset;
`ctx->pos` is loff_t (signed 64-bit), while `sb->s_blocksize` is unsigned long. On 32-bit kernels unsigned long is 32-bit, so the mask
~(sb->s_blocksize - 1)
is computed as a 32-bit unsigned value (e.g. 0xfffff000 for a 4 KiB block size). In the AND expression with the 64-bit `ctx->pos`, that unsigned operand is zero-extended to 64 bits per the usual arithmetic conversions, yielding 0x00000000fffff000. The high 32 bits of `ctx->pos` are silently cleared, even though directory size is allowed to exceed 4 GiB.
When readdir() crosses the 4 GiB boundary on a 32-bit kernel the position is reset back into the first 4 GiB block, making the re-validation path re-enumerate already-returned dirents indefinitely.
This is ocfs2_dir_foreach_blk_el(), the extent-list readdir path taken for all non-inline directories, so a directory large enough to cross 4 GiB reaches it.
This is the same class of bug that commit 3dce5bb82c97 ("exfat: Fix bitwise operation having different size") fixed in exfat, and the fix mirrors the equivalent ext4 fix in this series. Cast the operand to loff_t so the mask is 64-bit before the AND:
ctx->pos = (ctx->pos & ~((loff_t)sb->s_blocksize - 1)) | offset;
64-bit kernels are unaffected.
Patch / fix
- Linux Linux 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50, 7.2.4, 7.3
- linux Debian 12 6.1.190-1
- linux Debian 13 6.12.111-1
- linux Debian 14 7.2.6-1
- linux-6.12 Debian 12 6.12.111-1~deb12u1
debian advisories DEBIAN-CVE-2026-89490
- linux Ubuntu 22.04 LTS 5.15.0-202.212
- linux Ubuntu 26.04 LTS 7.0.0-42.42
- linux-aws Ubuntu 22.04 LTS 5.15.0-1119.126
- linux-aws Ubuntu 26.04 LTS 7.0.0-1016.17
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1120.130
- linux-gcp Ubuntu 26.04 LTS 7.0.0-1016.18
- linux-gke Ubuntu 22.04 LTS 5.15.0-1115.121
- linux-ibm Ubuntu 22.04 LTS 5.15.0-1113.117
ubuntu advisories UBUNTU-CVE-2026-89490
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-source openSUSE Tumbleweed 7.2.7-1.1
opensuse advisories openSUSE-SU-2026:11880-1
- git.kernel.org/stable/c/c28dc3407937aa8f225942538cd585c9b28ea65a commit
- git.kernel.org/stable/c/94569154ba49f5f85645d2019c8e206213d8404e commit
- git.kernel.org/stable/c/1ae7029823ae4c91664cb32eec7fb8dd5e1a337a commit
- git.kernel.org/stable/c/f9dd5cad8d09110ddff2db1fe756aae93c7552ff commit
- git.kernel.org/stable/c/1001fb3b69a11eaa0dc7c7428f6edfa48b88997a commit
- git.kernel.org/stable/c/c0c165487a2ea5a37ddcdab4259157b7a527129c commit
- git.kernel.org/stable/c/b53e2b271eeb6040c2a4a78230c570dc41cdcfa4 commit
- git.kernel.org/stable/c/a63308ab426f3a3c7e33b02c150ea59054620261 commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-89490 updated cvss 5.5
kernel: ocfs2: ocfs2: Denial of Service via readdir position truncation on 32-bit kernels
-
Red Hat OpenShift Container Platform 4 openshift/ose-rhel-coreos-8, openshift/ose-rhel-coreos-9affected: no fix available “Fix deferred”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Exploit prediction
0.18% chance of exploitation in the next 30 days, higher than 7% of all scored CVEs (FIRST EPSS, 2026-11-08).
Affected products
- Linux Linux
Classification
- Technology feeds
References
- git.kernel.org /stable/c/c28dc3407937aa8f225942538cd585c9b28ea65a
- git.kernel.org /stable/c/94569154ba49f5f85645d2019c8e206213d8404e
- git.kernel.org /stable/c/1ae7029823ae4c91664cb32eec7fb8dd5e1a337a
- git.kernel.org /stable/c/f9dd5cad8d09110ddff2db1fe756aae93c7552ff
- git.kernel.org /stable/c/1001fb3b69a11eaa0dc7c7428f6edfa48b88997a
- git.kernel.org /stable/c/c0c165487a2ea5a37ddcdab4259157b7a527129c
- git.kernel.org /stable/c/b53e2b271eeb6040c2a4a78230c570dc41cdcfa4
- git.kernel.org /stable/c/a63308ab426f3a3c7e33b02c150ea59054620261
Sources
- CVE List CVE-2026-89490
- NVD CVE-2026-89490
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.