Skip to content
Heist/ feed
Back to feed
UnratedFix available

vfs: Don't evict inode under the inode lru traversing context

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: vfs: Don't evict inode under the inode lru traversing context The inode reclaiming process(See function prune_icache_sb) collects all reclaimable inodes and mark them with I_FREEING flag at first, at that time, other processes will be stuck if they try getting these inodes (See function find_inode_fast), then the reclaiming process destroy the inodes by function dispose_list(). Some filesystems(eg. ext4 with ea_inode feature, ubifs with xattr) may do inode lookup in the inode evicting callback function, if the inode lookup is operated under the inode lru traversing context, deadlock problems may happen. Case 1: In function ext4_evict_inode(), the ea inode lookup could happen if ea_inode feature is enabled, the lookup process will be stuck under the evicting context like this: 1. File A has inode i_reg and an ea inode i_ea 2. getfattr(A, xattr_buf) // i_ea is added into lru // lru->i_ea 3. Then, following three processes running like this: PA PB echo 2 > /proc/sys/vm/drop_caches shrink_slab prune_dcache_sb // i_reg is added into lru, lru->i_ea->i_reg prune_icache_sb list_lru_walk_one inode_lru_isolate i_ea->i_state |= I_FREEING // set inode state inode_lru_isolate __iget(i_reg) spin_unlock(&i_reg->i_lock) spin_unlock(lru_lock) rm file A i_reg->nlink = 0 iput(i_reg) // i_reg->nlink is 0, do evict ext4_evict_inode ext4_xattr_delete_inode ext4_xattr_inode_dec_ref_all ext4_xattr_inode_iget ext4_iget(i_ea->i_ino) i

Products
Kernel
Affected versions
Not specified
Fixed versions
5.10.225, 5.15.166, 5.4.283, 6.1.107, 6.10.7, 6.6.48
CVEs
CVE-2024-45003
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 13:43 UTC · Revision 1

Source evidence

vfs: Don't evict inode under the inode lru traversing context

core-osv · Original source

Published 4 Sept 2024, 19:54 UTC

In the Linux kernel, the following vulnerability has been resolved: vfs: Don't evict inode under the inode lru traversing context The inode reclaiming process(See function prune_icache_sb) collects all reclaimable inodes and mark them with I_FREEING flag at first, at that time, other processes will be stuck if they try getting these inodes (See function find_inode_fast), then the reclaiming process destroy the inodes by function dispose_list(). Some filesystems(eg. ext4 with ea_inode feature, ubifs with xattr) may do inode lookup in the inode evicting callback function, if the inode lookup is operated under the inode lru traversing context, deadlock problems may happen. Case 1: In function ext4_evict_inode(), the ea inode lookup could happen if ea_inode feature is enabled, the lookup process will be stuck under the evicting context like this: 1. File A has inode i_reg and an ea inode i_ea 2. getfattr(A, xattr_buf) // i_ea is added into lru // lru->i_ea 3. Then, following three processes running like this: PA PB echo 2 > /proc/sys/vm/drop_caches shrink_slab prune_dcache_sb // i_reg is added into lru, lru->i_ea->i_reg prune_icache_sb list_lru_walk_one inode_lru_isolate i_ea->i_state |= I_FREEING // set inode state inode_lru_isolate __iget(i_reg) spin_unlock(&i_reg->i_lock) spin_unlock(lru_lock) rm file A i_reg->nlink = 0 iput(i_reg) // i_reg->nlink is 0, do evict ext4_evict_inode ext4_xattr_delete_inode ext4_xattr_inode_dec_ref_all ext4_xattr_inode_iget ext4_iget(i_ea->i_ino) i

osv:CVE-2024-45003

Kernel

Fixed versions: 5.4.283, 5.10.225, 5.15.166, 6.1.107, 6.6.48, 6.10.7

Complete source record
{
  "id": "b9bb8b9b960fcc63a09dd1d93dbc6ae2d4f0658d8562b9ec41ae4288928f07ab",
  "url": "https://osv.dev/vulnerability/CVE-2024-45003",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "vfs: Don't evict inode under the inode lru traversing context",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: vfs: Don't evict inode under the inode lru traversing context The inode reclaiming process(See function prune_icache_sb) collects all reclaimable inodes and mark them with I_FREEING flag at first, at that time, other processes will be stuck if they try getting these inodes (See function find_inode_fast), then the reclaiming process destroy the inodes by function dispose_list(). Some filesystems(eg. ext4 with ea_inode feature, ubifs with xattr) may do inode lookup in the inode evicting callback function, if the inode lookup is operated under the inode lru traversing context, deadlock problems may happen. Case 1: In function ext4_evict_inode(), the ea inode lookup could happen if ea_inode feature is enabled, the lookup process will be stuck under the evicting context like this: 1. File A has inode i_reg and an ea inode i_ea 2. getfattr(A, xattr_buf) // i_ea is added into lru // lru->i_ea 3. Then, following three processes running like this: PA PB echo 2 > /proc/sys/vm/drop_caches shrink_slab prune_dcache_sb // i_reg is added into lru, lru->i_ea->i_reg prune_icache_sb list_lru_walk_one inode_lru_isolate i_ea->i_state |= I_FREEING // set inode state inode_lru_isolate __iget(i_reg) spin_unlock(&i_reg->i_lock) spin_unlock(lru_lock) rm file A i_reg->nlink = 0 iput(i_reg) // i_reg->nlink is 0, do evict ext4_evict_inode ext4_xattr_delete_inode ext4_xattr_inode_dec_ref_all ext4_xattr_inode_iget ext4_iget(i_ea->i_ino) i",
    "evidence": "osv:CVE-2024-45003",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.4.283",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.10.225",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.15.166",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.107",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.48",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.10.7",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "CVE-2024-45003",
      "aliases": [
        "CVE-2024-45003"
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "e50e5129f384ae282adebfb561189cdb19b81cee"
                },
                {
                  "fixed": "3525ad25240dfdd8c78f3470911ed10aa727aa72"
                },
                {
                  "fixed": "03880af02a78bc9a98b5a581f529cf709c88a9b8"
                },
                {
                  "fixed": "cda54ec82c0f9d05393242b20b13f69b083f7e88"
                },
                {
                  "fixed": "437741eba63bf4e437e2beb5583f8633556a2b98"
                },
                {
                  "fixed": "b9bda5f6012dd00372f3a06a82ed8971a4c57c32"
                },
                {
                  "fixed": "9063ab49c11e9518a3f2352434bb276cc8134c5f"
                },
                {
                  "fixed": "2a0629834cd82f05d424bbc193374f9a43d1f87d"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-45003.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "4.13.0"
                },
                {
                  "fixed": "5.4.283"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.5.0"
                },
                {
                  "fixed": "5.10.225"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.11.0"
                },
                {
                  "fixed": "5.15.166"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.107"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.48"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.10.7"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-45003.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:29.395603174Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/03880af02a78bc9a98b5a581f529cf709c88a9b8",
        "https://git.kernel.org/stable/c/2a0629834cd82f05d424bbc193374f9a43d1f87d",
        "https://git.kernel.org/stable/c/3525ad25240dfdd8c78f3470911ed10aa727aa72",
        "https://git.kernel.org/stable/c/437741eba63bf4e437e2beb5583f8633556a2b98",
        "https://git.kernel.org/stable/c/9063ab49c11e9518a3f2352434bb276cc8134c5f",
        "https://git.kernel.org/stable/c/b9bda5f6012dd00372f3a06a82ed8971a4c57c32",
        "https://git.kernel.org/stable/c/cda54ec82c0f9d05393242b20b13f69b083f7e88",
        "https://lists.debian.org/debian-lts-announce/2024/10/msg00003.html",
        "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/45xxx/CVE-2024-45003.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2024-45003",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/45xxx/CVE-2024-45003.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2024-45003",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 496041,
  "published_at": "2024-09-04T19:54:46.276+00:00"
}