{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-47679","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-09-30T16:00:12.939Z","datePublished":"2024-10-21T11:53:22.469Z","dateUpdated":"2025-11-03T22:20:46.317Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2025-05-04T09:37:05.918Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nvfs: fix race between evice_inodes() and find_inode()&iput()\n\nHi, all\n\nRecently I noticed a bug[1] in btrfs, after digged it into\nand I believe it'a race in vfs.\n\nLet's assume there's a inode (ie ino 261) with i_count 1 is\ncalled by iput(), and there's a concurrent thread calling\ngeneric_shutdown_super().\n\ncpu0:                              cpu1:\niput() // i_count is 1\n  ->spin_lock(inode)\n  ->dec i_count to 0\n  ->iput_final()                    generic_shutdown_super()\n    ->__inode_add_lru()               ->evict_inodes()\n      // cause some reason[2]           ->if (atomic_read(inode->i_count)) continue;\n      // return before                  // inode 261 passed the above check\n      // list_lru_add_obj()             // and then schedule out\n   ->spin_unlock()\n// note here: the inode 261\n// was still at sb list and hash list,\n// and I_FREEING|I_WILL_FREE was not been set\n\nbtrfs_iget()\n  // after some function calls\n  ->find_inode()\n    // found the above inode 261\n    ->spin_lock(inode)\n   // check I_FREEING|I_WILL_FREE\n   // and passed\n      ->__iget()\n    ->spin_unlock(inode)                // schedule back\n                                        ->spin_lock(inode)\n                                        // check (I_NEW|I_FREEING|I_WILL_FREE) flags,\n                                        // passed and set I_FREEING\niput()                                  ->spin_unlock(inode)\n  ->spin_lock(inode)\t\t\t  ->evict()\n  // dec i_count to 0\n  ->iput_final()\n    ->spin_unlock()\n    ->evict()\n\nNow, we have two threads simultaneously evicting\nthe same inode, which may trigger the BUG(inode->i_state & I_CLEAR)\nstatement both within clear_inode() and iput().\n\nTo fix the bug, recheck the inode->i_count after holding i_lock.\nBecause in the most scenarios, the first check is valid, and\nthe overhead of spin_lock() can be reduced.\n\nIf there is any misunderstanding, please let me know, thanks.\n\n[1]: https://lore.kernel.org/linux-btrfs/000000000000eabe1d0619c48986@google.com/\n[2]: The reason might be 1. SB_ACTIVE was removed or 2. mapping_shrinkable()\nreturn false when I reproduced the bug."}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/inode.c"],"versions":[{"version":"63997e98a3be68d7cec806d22bf9b02b2e1daabb","lessThan":"6cc13a80a26e6b48f78c725c01b91987d61563ef","status":"affected","versionType":"git"},{"version":"63997e98a3be68d7cec806d22bf9b02b2e1daabb","lessThan":"489faddb1ae75b0e1a741fe5ca2542a2b5e794a5","status":"affected","versionType":"git"},{"version":"63997e98a3be68d7cec806d22bf9b02b2e1daabb","lessThan":"47a68c75052a660e4c37de41e321582ec9496195","status":"affected","versionType":"git"},{"version":"63997e98a3be68d7cec806d22bf9b02b2e1daabb","lessThan":"3721a69403291e2514d13a7c3af50a006ea1153b","status":"affected","versionType":"git"},{"version":"63997e98a3be68d7cec806d22bf9b02b2e1daabb","lessThan":"540fb13120c9eab3ef203f90c00c8e69f37449d1","status":"affected","versionType":"git"},{"version":"63997e98a3be68d7cec806d22bf9b02b2e1daabb","lessThan":"0eed942bc65de1f93eca7bda51344290f9c573bb","status":"affected","versionType":"git"},{"version":"63997e98a3be68d7cec806d22bf9b02b2e1daabb","lessThan":"0f8a5b6d0dafa4f533ac82e98f8b812073a7c9d1","status":"affected","versionType":"git"},{"version":"63997e98a3be68d7cec806d22bf9b02b2e1daabb","lessThan":"6c857fb12b9137fee574443385d53914356bbe11","status":"affected","versionType":"git"},{"version":"63997e98a3be68d7cec806d22bf9b02b2e1daabb","lessThan":"88b1afbf0f6b221f6c5bb66cc80cd3b38d696687","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/inode.c"],"versions":[{"version":"2.6.37","status":"affected"},{"version":"0","lessThan":"2.6.37","status":"unaffected","versionType":"semver"},{"version":"4.19.323","lessThanOrEqual":"4.19.*","status":"unaffected","versionType":"semver"},{"version":"5.4.285","lessThanOrEqual":"5.4.*","status":"unaffected","versionType":"semver"},{"version":"5.10.227","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.168","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.113","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.54","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.10.13","lessThanOrEqual":"6.10.*","status":"unaffected","versionType":"semver"},{"version":"6.11.2","lessThanOrEqual":"6.11.*","status":"unaffected","versionType":"semver"},{"version":"6.12","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"4.19.323"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"5.4.285"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"5.10.227"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"5.15.168"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"6.1.113"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"6.6.54"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"6.10.13"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"6.11.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"6.12"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/6cc13a80a26e6b48f78c725c01b91987d61563ef"},{"url":"https://git.kernel.org/stable/c/489faddb1ae75b0e1a741fe5ca2542a2b5e794a5"},{"url":"https://git.kernel.org/stable/c/47a68c75052a660e4c37de41e321582ec9496195"},{"url":"https://git.kernel.org/stable/c/3721a69403291e2514d13a7c3af50a006ea1153b"},{"url":"https://git.kernel.org/stable/c/540fb13120c9eab3ef203f90c00c8e69f37449d1"},{"url":"https://git.kernel.org/stable/c/0eed942bc65de1f93eca7bda51344290f9c573bb"},{"url":"https://git.kernel.org/stable/c/0f8a5b6d0dafa4f533ac82e98f8b812073a7c9d1"},{"url":"https://git.kernel.org/stable/c/6c857fb12b9137fee574443385d53914356bbe11"},{"url":"https://git.kernel.org/stable/c/88b1afbf0f6b221f6c5bb66cc80cd3b38d696687"}],"title":"vfs: fix race between evice_inodes() and find_inode()&iput()","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-47679","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-10-21T13:07:33.659444Z"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-10-21T13:14:16.951Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html"},{"url":"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"}],"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2025-11-03T22:20:46.317Z"}}]}}