CVE-2026-89490 Affecting linux-6.12 package, versions <6.12.111-1~deb12u1


Severity

Recommended
low

Based on default assessment until relevant scores are available.

Threat Intelligence

EPSS
0.18% (7th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-DEBIAN12-LINUX612-20506520
  • published5 Oct 2026
  • disclosed11 Sept 2026

Introduced: 11 Sep 2026

NewCVE-2026-89490  (opens in a new tab)

How to fix?

Upgrade Debian:12 linux-6.12 to version 6.12.111-1~deb12u1 or higher.

NVD Description

Note: Versions mentioned in the description apply only to the upstream linux-6.12 package and not the linux-6.12 package as distributed by Debian. See How to fix? for Debian:12 relevant fixed versions and status.

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-&gt;pos = (ctx-&gt;pos &amp; ~(sb-&gt;s_blocksize - 1)) | offset;

ctx-&gt;pos is loff_t (signed 64-bit), while sb-&gt;s_blocksize is unsigned long. On 32-bit kernels unsigned long is 32-bit, so the mask

~(sb-&gt;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-&gt;pos, that unsigned operand is zero-extended to 64 bits per the usual arithmetic conversions, yielding 0x00000000fffff000. The high 32 bits of ctx-&gt;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-&gt;pos = (ctx-&gt;pos &amp; ~((loff_t)sb-&gt;s_blocksize - 1)) | offset;

64-bit kernels are unaffected.

CVSS Base Scores

version 3.1