In the Linux kernel, the following vulnerability has been resolved:
Revert "libfs: fix infinite directory reads for offset dir"
The current directory offset allocator (based on mtree_alloc_cyclic) stores the next offset value to return in octx->next_offset. This mechanism typically returns values that increase monotonically over time. Eventually, though, the newly allocated offset value wraps back to a low number (say, 2) which is smaller than other already- allocated offset values.
Yu Kuai <[email protected]> reports that, after commit 64a7ce76fb90 ("libfs: fix infinite directory reads for offset dir"), if a directory's offset allocator wraps, existing entries are no longer visible via readdir/getdents because offset_readdir() stops listing entries once an entry's offset is larger than octx->next_offset. These entries vanish persistently -- they can be looked up, but will never again appear in readdir(3) output.
The reason for this is that the commit treats directory offsets as monotonically increasing integer values rather than opaque cookies, and introduces this comparison:
if (dentry2offset(dentry) >= last_index) {
On 64-bit platforms, the directory offset value upper bound is 2^63 - 1. Directory offsets will monotonically increase for millions of years without wrapping.
On 32-bit platforms, however, LONG_MAX is 2^31 - 1. The allocator can wrap after only a few weeks (at worst).
Revert commit 64a7ce76fb90 ("libfs: fix infinite directory reads for offset dir") to prepare for a fix that can work properly on 32-bit systems and might apply to recent LTS kernels where shmem employs the simple_offset mechanism.
CVSS Details
- CVSS 3.1 Base Score: 7.1
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linuxNo solution exists | May 15, 2025 | Feb 12, 2025 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Feb 12, 2025 |
| Ubuntu | — | Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-generic-64k-6.8Upgrade linux-image-6.11.0-1012-awsUpgrade linux-image-6.8.0-1029-raspiUpgrade linux-image-generic-lpaeUpgrade linux-image-gkeop-6.8Upgrade linux-image-oem-24.04bUpgrade linux-image-raspi-realtimeUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1031-gcp-64kUpgrade linux-image-generic-64kUpgrade linux-image-6.11.0-1008-realtimeUpgrade linux-image-oem-24.04aUpgrade linux-image-6.8.0-1030-azureUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-oem-22.04bUpgrade linux-image-6.8.0-62-genericUpgrade linux-image-gcpUpgrade linux-image-gkeopUpgrade linux-image-generic-6.8Upgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-azure-lts-24.04Upgrade linux-image-lowlatencyUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-6.8.0-1029-oemUpgrade linux-image-6.11.0-1012-lowlatencyUpgrade linux-image-6.8.0-1027-ibmUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-ibmUpgrade linux-image-6.11.0-1013-azureUpgrade linux-image-6.8.0-1029-nvidia-64kUpgrade linux-image-azure-nvidiaUpgrade linux-image-6.8.0-1030-aws-64kUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-virtualUpgrade linux-image-genericUpgrade linux-image-6.8.0-1031-gcpUpgrade linux-image-oem-22.04Upgrade linux-image-oem-22.04aUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.8.0-1030-azure-fdeUpgrade linux-image-6.8.0-1027-oracle-64kUpgrade linux-image-6.11.0-24-genericUpgrade linux-image-6.8.0-62-generic-64kUpgrade linux-image-6.11.0-1013-gcp-64kUpgrade linux-image-nvidiaUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.1-1023-realtimeUpgrade linux-image-6.8.0-1029-nvidia-lowlatency-64kUpgrade linux-image-raspiUpgrade linux-image-azureUpgrade linux-image-oem-24.04Upgrade linux-image-6.11.0-24-generic-64kUpgrade linux-image-6.11.0-1012-lowlatency-64kUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-oracleUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-oem-22.04cUpgrade linux-image-6.8.0-1029-nvidia-lowlatencyUpgrade linux-image-6.8.0-62-lowlatencyUpgrade linux-image-6.11.0-1011-raspiUpgrade linux-image-6.11.0-1013-azure-fdeUpgrade linux-image-nvidia-6.8Upgrade linux-image-kvmUpgrade linux-image-6.8.0-64-generic-64kUpgrade linux-image-6.8.0-1027-oracleUpgrade linux-image-6.11.0-1013-gcpUpgrade linux-image-nvidia-64kUpgrade linux-image-oracle-64kUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-aws-lts-24.04Upgrade linux-image-gkeUpgrade linux-image-6.8.0-1013-gkeopUpgrade linux-image-awsUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-aws-64kUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.0-1030-awsUpgrade linux-image-6.11.0-1014-oracle-64kUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-64-genericUpgrade linux-image-6.8.0-2024-raspi-realtimeUpgrade linux-image-virtual-6.8Upgrade linux-image-6.11.0-1020-oemUpgrade linux-image-6.8.0-1018-azure-nvidiaUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-oem-22.04dUpgrade linux-image-6.8.0-1029-nvidiaUpgrade linux-image-6.8.0-1026-gkeUpgrade linux-image-gcp-64kUpgrade linux-image-realtimeUpgrade linux-image-6.8.0-62-lowlatency-64kUpgrade linux-image-6.11.0-1014-oracle | Apr 24, 2025 | Feb 12, 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