In the Linux kernel, the following vulnerability has been resolved:
vfs: fix race between evice_inodes() and find_inode()&iput()
Hi, all
Recently I noticed a bug[1] in btrfs, after digged it into and I believe it'a race in vfs.
Let's assume there's a inode (ie ino 261) with i_count 1 is called by iput(), and there's a concurrent thread calling generic_shutdown_super().
cpu0: cpu1: iput() // i_count is 1 ->spin_lock(inode) ->dec i_count to 0 ->iput_final() generic_shutdown_super() ->__inode_add_lru() ->evict_inodes() // cause some reason[2] ->if (atomic_read(inode->i_count)) continue; // return before // inode 261 passed the above check // list_lru_add_obj() // and then schedule out ->spin_unlock() // note here: the inode 261 // was still at sb list and hash list, // and I_FREEING|I_WILL_FREE was not been set
btrfs_iget() // after some function calls ->find_inode() // found the above inode 261 ->spin_lock(inode) // check I_FREEING|I_WILL_FREE // and passed ->__iget() ->spin_unlock(inode) // schedule back ->spin_lock(inode) // check (I_NEW|I_FREEING|I_WILL_FREE) flags, // passed and set I_FREEING iput() ->spin_unlock(inode) ->spin_lock(inode) ->evict() // dec i_count to 0 ->iput_final() ->spin_unlock() ->evict()
Now, we have two threads simultaneously evicting the same inode, which may trigger the BUG(inode->i_state & I_CLEAR) statement both within clear_inode() and iput().
To fix the bug, recheck the inode->i_count after holding i_lock. Because in the most scenarios, the first check is valid, and the overhead of spin_lock() can be reduced.
If there is any misunderstanding, please let me know, thanks.
[1]: https://lore.kernel.org/linux-btrfs/[email protected]/ [2]: The reason might be 1. SB_ACTIVE was removed or 2. mapping_shrinkable() return false when I reproduced the bug.
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-debug-modulesUpgrade kernel-rt-64k-debug-modulesUpgrade kernel-rt-modules-extraUpgrade kernel-64k-coreUpgrade kernel-rt-coreUpgrade kernel-debug-modules-coreUpgrade kernel-64k-debug-modulesUpgrade kernel-rt-modules-coreUpgrade kernel-64k-debugUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-rt-64k-develUpgrade kernel-rt-64k-debug-modules-extraUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-develUpgrade kernel-rt-64k-debug-coreUpgrade rvUpgrade kernel-rt-64k-coreUpgrade kernel-64kUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-debugUpgrade kernel-64k-modulesUpgrade kernel-rt-64k-debug-develUpgrade kernel-tools-libsUpgrade kernel-rt-64kUpgrade kernel-tools-libs-develUpgrade kernelUpgrade kernel-rt-debug-coreUpgrade kernel-zfcpdump-coreUpgrade kernel-rt-64k-modules-coreUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-uki-virt-addonsUpgrade kernel-cross-headersUpgrade kernel-debug-modules-extraUpgrade kernel-rt-64k-debugUpgrade kernel-debug-uki-virtUpgrade kernel-64k-debug-develUpgrade kernel-64k-debug-coreUpgrade kernel-rt-64k-modulesUpgrade python3-perfUpgrade libperfUpgrade kernel-modules-coreUpgrade kernel-coreUpgrade kernel-64k-debug-modules-coreUpgrade kernel-uki-virtUpgrade kernel-zfcpdump-develUpgrade kernel-rt-debug-modules-extraUpgrade kernel-devel-matchedUpgrade kernel-docUpgrade kernel-rt-64k-modules-extraUpgrade kernel-rt-debug-develUpgrade kernel-modulesUpgrade kernel-64k-develUpgrade kernel-64k-modules-coreUpgrade kernel-64k-debug-modules-extraUpgrade kernel-debug-coreUpgrade kernel-rt-modulesUpgrade kernel-develUpgrade kernel-modules-extraUpgrade kernel-rt-64k-debug-modules-coreUpgrade kernel-64k-modules-extraUpgrade kernel-debugUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-rtUpgrade kernel-toolsUpgrade rtlaUpgrade kernel-headersUpgrade kernel-debug-devel-matchedUpgrade kernel-64k-devel-matchedUpgrade kernel-abi-stablelistsUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-debug-develUpgrade kernel-rt-debug-modules-coreUpgrade perfUpgrade kernel-zfcpdump | Nov 20, 2025 | Nov 11, 2025 |
| Amazon Linux Ami 2 | — | Upgrade kernel-headersUpgrade kernel-tools-develUpgrade perf-debuginfoUpgrade kernel-livepatch-5.15.168-114.166Upgrade kernel-tools-debuginfoUpgrade kernel-develUpgrade kernel-livepatch-5.10.227-219.884Upgrade kernel-debuginfo-common-x86_64Upgrade python-perf-debuginfoUpgrade kernelUpgrade kernel-debuginfoUpgrade perfUpgrade bpftoolUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-toolsUpgrade bpftool-debuginfoUpgrade python-perf | Mar 14, 2025 | Oct 21, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-livepatch-6.1.115-126.197Upgrade kernel-debuginfo-common-aarch64Upgrade python3-perf-debuginfoUpgrade kernel-libbpf-develUpgrade kernel-tools-debuginfoUpgrade kernelUpgrade kernel-modules-extraUpgrade bpftoolUpgrade kernel-toolsUpgrade kernel-libbpf-staticUpgrade bpftool-debuginfoUpgrade kernel-modules-extra-commonUpgrade python3-perfUpgrade kernel-develUpgrade kernel-tools-develUpgrade perf-debuginfoUpgrade perfUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-headersUpgrade kernel-debuginfoUpgrade kernel-libbpf | Mar 27, 2025 | Oct 21, 2024 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Nov 11, 2024 | Oct 21, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade python3-perfUpgrade kernel-tools-libsUpgrade kernelUpgrade kernel-abi-stablelistsUpgrade bpftoolUpgrade kernel-tools | Feb 11, 2025 | Oct 21, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-toolsUpgrade kernelUpgrade kernel-abi-stablelistsUpgrade kernel-tools-libsUpgrade bpftoolUpgrade python3-perf | Feb 11, 2025 | Oct 21, 2024 |
| Oracle_linux | — | Upgrade kernel-uekUpgrade kernel | Dec 17, 2024 | Oct 21, 2024 |
| Redhat_linux | — | Upgrade kernel-rtUpgrade kernelNo solution exists | Jul 9, 2025 | Oct 21, 2024 |
| Rocky_linux | — | Upgrade kernel-uki-virt-addonsUpgrade kernel-debug-modules-extraUpgrade kernel-tools-libs-develUpgrade perfUpgrade libperf-debuginfoUpgrade kernel-rt-debug-coreUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-rt-debug-debuginfoUpgrade kernel-zfcpdump-coreUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade kernel-debug-devel-matchedUpgrade kernel-rt-modules-coreUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-rtUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-debug-modules-extraUpgrade kernel-zfcpdumpUpgrade kernel-rt-develUpgrade kernel-debuginfo-common-s390xUpgrade kernel-rt-debug-modules-coreUpgrade kernel-rt-modulesUpgrade python3-perf-debuginfoUpgrade kernel-debug-debuginfoUpgrade kernel-rt-modules-extraUpgrade kernel-debug-modules-coreUpgrade kernel-rt-debuginfoUpgrade rvUpgrade kernel-zfcpdump-debuginfoUpgrade kernel-modules-coreUpgrade perf-debuginfoUpgrade kernel-coreUpgrade kernel-rt-debugUpgrade kernel-rt-debug-modulesUpgrade libperfUpgrade kernel-debugUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-debug-uki-virtUpgrade python3-perfUpgrade kernel-zfcpdump-develUpgrade kernel-develUpgrade kernelUpgrade kernel-rt-debug-develUpgrade kernel-debug-develUpgrade kernel-modules-extraUpgrade kernel-rt-coreUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-debug-modulesUpgrade kernel-devel-matchedUpgrade kernel-debuginfoUpgrade rtlaUpgrade kernel-tools-debuginfoUpgrade kernel-uki-virtUpgrade kernel-debug-coreUpgrade kernel-modules | Feb 5, 2026 | Nov 21, 2025 |
| Ubuntu | — | Upgrade linux-image-azure-lts-22.04Upgrade linux-image-5.4.0-1142-awsUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-6.11.0-1010-lowlatencyUpgrade linux-image-6.11.0-18-generic-64kUpgrade linux-image-oem-osp1Upgrade linux-image-6.11.0-1008-raspiUpgrade linux-image-oem-20.04bUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-5.15.0-1070-gkeUpgrade linux-image-intelUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-5.15.0-1078-azureUpgrade linux-image-virtualUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-gkeUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.11.0-18-genericUpgrade linux-image-oem-22.04cUpgrade linux-image-oracle-lts-20.04Upgrade linux-image-oem-24.04Upgrade linux-image-5.15.0-1072-gcpUpgrade linux-image-bluefieldUpgrade linux-image-5.15.0-1066-ibmUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-5.4.0-208-lowlatencyUpgrade linux-image-oem-20.04cUpgrade linux-image-5.4.0-1127-kvmUpgrade linux-image-genericUpgrade linux-image-5.15.0-1071-oracleUpgrade linux-image-6.8.0-1019-raspiUpgrade linux-image-5.4.0-1099-bluefieldUpgrade linux-image-6.11.0-1009-azure-fdeUpgrade linux-image-nvidia-6.8Upgrade linux-image-6.8.0-1022-nvidiaUpgrade linux-image-5.15.0-1073-awsUpgrade linux-image-5.15.0-127-generic-lpaeUpgrade linux-image-6.8.0-1024-oemUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-gkeopUpgrade linux-image-6.8.0-1020-oracle-64kUpgrade linux-image-oem-20.04Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-5.4.0-1140-awsUpgrade linux-image-6.8.0-1025-azure-fdeUpgrade linux-image-oemUpgrade linux-image-generic-64kUpgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-oem-22.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-5.15.0-1070-kvmUpgrade linux-image-6.8.0-1022-nvidia-lowlatencyUpgrade linux-image-5.4.0-1145-azureUpgrade linux-image-realtimeUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-intel-iotgUpgrade linux-image-nvidiaUpgrade linux-image-5.15.0-1056-gkeopUpgrade linux-image-oem-22.04dUpgrade linux-image-5.15.0-127-genericUpgrade linux-image-5.15.0-1071-intel-iotgUpgrade linux-image-6.8.0-1020-oracleUpgrade linux-image-6.8.0-1025-azureUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-oracleUpgrade linux-image-6.8.0-57-genericUpgrade linux-image-6.11.0-1009-awsUpgrade linux-image-gcp-64kUpgrade linux-image-6.11.0-1010-lowlatency-64kUpgrade linux-image-raspi-hwe-18.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-fipsUpgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-virtual-hwe-18.04Upgrade linux-image-generic-lpaeUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-5.4.0-1129-raspiUpgrade linux-image-6.11.0-1009-gcpUpgrade linux-image-5.15.0-127-lowlatencyUpgrade linux-image-6.8.0-54-generic-64kUpgrade linux-image-6.8.0-1006-gkeopUpgrade linux-image-5.4.0-1086-ibmUpgrade linux-image-6.8.0-54-lowlatency-64kUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-gke-5.15Upgrade linux-image-gcp-lts-20.04Upgrade linux-image-aws-lts-24.04Upgrade linux-image-5.15.0-127-generic-64kUpgrade linux-image-6.8.0-1022-ibmUpgrade linux-image-6.8.0-1024-gcp-64kUpgrade linux-image-azure-cvmUpgrade linux-image-oracle-64kUpgrade linux-image-azure-nvidiaUpgrade linux-image-5.15.0-127-lowlatency-64kUpgrade linux-image-azureUpgrade linux-image-5.15.0-1039-xilinx-zynqmpUpgrade linux-image-aws-lts-20.04Upgrade linux-image-5.4.0-1138-oracleUpgrade linux-image-6.8.0-54-lowlatencyUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-generic-hwe-18.04Upgrade linux-image-nvidia-64kUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-azure-lts-20.04Upgrade linux-image-5.4.0-208-genericUpgrade linux-image-6.8.0-1024-gcpUpgrade linux-image-6.8.0-1019-gkeUpgrade linux-image-6.11.0-1015-oemUpgrade linux-image-6.8.0-1014-azure-nvidiaUpgrade linux-image-5.15.0-1068-nvidia-lowlatencyUpgrade linux-image-6.8.0-1022-nvidia-lowlatency-64kUpgrade linux-image-lowlatencyUpgrade linux-image-oem-22.04bUpgrade linux-image-ibm-lts-20.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-gcpUpgrade linux-image-6.8.0-57-generic-64kUpgrade linux-image-6.11.0-1005-realtimeUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-oem-24.04aUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-ibm-classicUpgrade linux-image-kvmUpgrade linux-image-azure-fdeUpgrade linux-image-oem-24.04bUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.11.0-1011-oracle-64kUpgrade linux-image-5.4.0-1116-fipsUpgrade linux-image-5.4.0-1048-iotUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-ibmUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-azure-lts-24.04Upgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-1023-awsUpgrade linux-image-6.8.0-1022-nvidia-64kUpgrade linux-image-raspi2Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-5.15.0-1068-nvidiaUpgrade linux-image-5.4.0-1058-xilinx-zynqmpUpgrade linux-image-6.11.0-1009-azureUpgrade linux-image-6.11.0-1011-oracleUpgrade linux-image-5.15.0-1066-raspiUpgrade linux-image-5.4.0-208-generic-lpaeUpgrade linux-image-oem-22.04aUpgrade linux-image-raspiUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-aws-lts-22.04Upgrade linux-image-awsUpgrade linux-image-6.8.0-54-genericUpgrade linux-image-5.4.0-1143-gcpUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-raspi-nolpaeUpgrade linux-image-oem-20.04d | Dec 18, 2024 | Oct 21, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 13, 2025 | Oct 21, 2024 |
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