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-64k-modulesUpgrade kernel-rt-debug-coreUpgrade kernel-64k-debug-modulesUpgrade kernelUpgrade kernel-debug-modules-coreUpgrade kernel-uki-virt-addonsUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-rt-debugUpgrade kernel-tools-libs-develUpgrade kernel-zfcpdump-coreUpgrade kernel-64kUpgrade kernel-rt-64k-coreUpgrade kernel-rt-modules-coreUpgrade kernel-rt-modules-extraUpgrade kernel-rt-develUpgrade rvUpgrade kernel-rt-coreUpgrade kernel-debug-uki-virtUpgrade kernel-rt-64k-debug-coreUpgrade kernel-rt-64k-develUpgrade kernel-64k-debug-coreUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-64k-debug-modulesUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-tools-libsUpgrade kernel-64k-coreUpgrade kernel-rt-64k-debugUpgrade kernel-rt-64k-debug-modules-extraUpgrade kernel-64k-debugUpgrade kernel-cross-headersUpgrade kernel-debug-modulesUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-64kUpgrade kernel-rt-64k-debug-develUpgrade kernel-debug-modules-extraUpgrade kernel-rt-64k-modules-coreUpgrade kernel-64k-debug-develUpgrade kernel-rt-debug-modules-extraUpgrade kernel-devel-matchedUpgrade kernel-abi-stablelistsUpgrade kernel-rt-64k-debug-modules-coreUpgrade kernel-modules-coreUpgrade kernel-rt-64k-modulesUpgrade kernel-docUpgrade kernel-zfcpdumpUpgrade kernel-debug-devel-matchedUpgrade libperfUpgrade kernel-modulesUpgrade kernel-debug-coreUpgrade kernel-debugUpgrade kernel-zfcpdump-develUpgrade kernel-64k-devel-matchedUpgrade kernel-rt-debug-develUpgrade kernel-64k-modules-extraUpgrade kernel-headersUpgrade kernel-rt-modulesUpgrade kernel-develUpgrade kernel-rt-64k-modules-extraUpgrade kernel-modules-extraUpgrade kernel-toolsUpgrade kernel-64k-debug-modules-coreUpgrade kernel-coreUpgrade kernel-uki-virtUpgrade perfUpgrade kernel-debug-develUpgrade kernel-rt-debug-modules-coreUpgrade kernel-64k-debug-modules-extraUpgrade kernel-rtUpgrade kernel-zfcpdump-modules-extraUpgrade rtlaUpgrade python3-perfUpgrade kernel-64k-modules-coreUpgrade kernel-64k-develUpgrade kernel-zfcpdump-modules-core | Nov 20, 2025 | Nov 11, 2025 |
| Amazon Linux Ami 2 | — | Upgrade kernel-toolsUpgrade bpftoolUpgrade python-perfUpgrade bpftool-debuginfoUpgrade perfUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-debuginfoUpgrade kernel-livepatch-5.10.227-219.884Upgrade kernel-debuginfoUpgrade kernelUpgrade python-perf-debuginfoUpgrade kernel-develUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-livepatch-5.15.168-114.166Upgrade kernel-headersUpgrade perf-debuginfoUpgrade kernel-tools-devel | Mar 14, 2025 | Oct 21, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-debuginfo-common-aarch64Upgrade kernel-develUpgrade kernel-livepatch-6.1.115-126.197Upgrade python3-perfUpgrade kernel-libbpf-develUpgrade kernel-toolsUpgrade kernelUpgrade python3-perf-debuginfoUpgrade bpftoolUpgrade kernel-tools-debuginfoUpgrade kernel-modules-extraUpgrade kernel-libbpf-staticUpgrade bpftool-debuginfoUpgrade kernel-modules-extra-commonUpgrade perfUpgrade kernel-tools-develUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-libbpfUpgrade kernel-headersUpgrade kernel-debuginfoUpgrade perf-debuginfo | Mar 27, 2025 | Oct 21, 2024 |
| Debian | — | Upgrade linuxUpgrade linux-6.1 | Nov 11, 2024 | Oct 21, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade python3-perfUpgrade kernel-tools-libsUpgrade kernelUpgrade kernel-toolsUpgrade kernel-abi-stablelistsUpgrade bpftool | Feb 11, 2025 | Oct 21, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-toolsUpgrade kernelUpgrade bpftoolUpgrade kernel-tools-libsUpgrade python3-perfUpgrade kernel-abi-stablelists | Feb 11, 2025 | Oct 21, 2024 |
| Oracle_linux | — | Upgrade kernel-uekUpgrade kernel | Dec 17, 2024 | Oct 21, 2024 |
| Redhat_linux | — | Upgrade kernelNo solution existsUpgrade kernel-rt | Jul 9, 2025 | Oct 21, 2024 |
| Rocky_linux | — | Upgrade kernelUpgrade kernel-debug-develUpgrade kernel-zfcpdump-debuginfoUpgrade kernel-zfcpdump-develUpgrade perf-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-rt-debug-modulesUpgrade kernel-zfcpdump-modules-extraUpgrade python3-perfUpgrade kernel-modules-coreUpgrade kernel-modules-extraUpgrade kernel-rt-coreUpgrade kernel-debug-uki-virtUpgrade kernel-debugUpgrade kernel-debug-modulesUpgrade kernel-coreUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-rt-debugUpgrade libperfUpgrade kernel-develUpgrade kernel-devel-matchedUpgrade kernel-debug-coreUpgrade kernel-debuginfoUpgrade kernel-modulesUpgrade rtlaUpgrade kernel-uki-virtUpgrade kernel-rt-debug-develUpgrade kernel-debuginfo-common-s390xUpgrade kernel-tools-libsUpgrade kernel-rt-debug-coreUpgrade kernel-rt-modules-coreUpgrade kernel-rt-debug-debuginfoUpgrade kernel-debug-modules-extraUpgrade python3-perf-debuginfoUpgrade kernel-tools-libs-develUpgrade kernel-rt-debug-modules-coreUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-rt-modulesUpgrade kernel-toolsUpgrade kernel-debug-modules-coreUpgrade kernel-rt-debug-modules-extraUpgrade kernel-zfcpdump-modulesUpgrade kernel-zfcpdumpUpgrade kernel-rt-debuginfoUpgrade perfUpgrade kernel-uki-virt-addonsUpgrade kernel-rtUpgrade kernel-debug-devel-matchedUpgrade kernel-debug-debuginfoUpgrade rvUpgrade kernel-rt-modules-extraUpgrade libperf-debuginfoUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-zfcpdump-coreUpgrade kernel-rt-devel | Feb 5, 2026 | Nov 21, 2025 |
| Ubuntu | — | Upgrade linux-image-6.11.0-1008-raspiUpgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-oem-22.04dUpgrade linux-image-fipsUpgrade linux-image-raspi-hwe-18.04Upgrade linux-image-gcp-64kUpgrade linux-image-5.4.0-1142-awsUpgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-5.15.0-1073-awsUpgrade linux-image-oemUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-oem-osp1Upgrade linux-image-5.4.0-1140-awsUpgrade linux-image-virtual-hwe-18.04Upgrade linux-image-6.8.0-1020-oracle-64kUpgrade linux-image-6.8.0-1019-raspiUpgrade linux-image-5.15.0-1071-oracleUpgrade linux-image-5.4.0-1145-azureUpgrade linux-image-nvidiaUpgrade linux-image-generic-64kUpgrade linux-image-oem-20.04bUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-oem-20.04Upgrade linux-image-gkeUpgrade linux-image-virtualUpgrade linux-image-oem-22.04Upgrade linux-image-5.4.0-1127-kvmUpgrade linux-image-generic-lpaeUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-bluefieldUpgrade linux-image-6.8.0-1022-nvidia-lowlatencyUpgrade linux-image-6.8.0-1025-azure-fdeUpgrade linux-image-oem-24.04Upgrade linux-image-oem-22.04cUpgrade linux-image-5.15.0-1070-gkeUpgrade linux-image-5.15.0-1056-gkeopUpgrade linux-image-5.15.0-1070-kvmUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-oem-20.04cUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-6.8.0-1024-oemUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-genericUpgrade linux-image-6.8.0-1022-nvidiaUpgrade linux-image-5.15.0-1078-azureUpgrade linux-image-gkeopUpgrade linux-image-intel-iotgUpgrade linux-image-6.8.0-1025-azureUpgrade linux-image-6.11.0-18-generic-64kUpgrade linux-image-oracleUpgrade linux-image-6.11.0-1009-awsUpgrade linux-image-6.8.0-57-genericUpgrade linux-image-6.11.0-18-genericUpgrade linux-image-5.15.0-1066-ibmUpgrade linux-image-5.15.0-1071-intel-iotgUpgrade linux-image-5.4.0-208-lowlatencyUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-5.4.0-1099-bluefieldUpgrade linux-image-6.11.0-1009-azure-fdeUpgrade linux-image-6.11.0-1010-lowlatency-64kUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-5.15.0-1072-gcpUpgrade linux-image-intelUpgrade linux-image-oracle-lts-20.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-realtimeUpgrade linux-image-5.15.0-127-generic-lpaeUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-6.11.0-1010-lowlatencyUpgrade linux-image-5.15.0-127-genericUpgrade linux-image-6.8.0-1020-oracleUpgrade linux-image-azure-lts-22.04Upgrade linux-image-lowlatencyUpgrade linux-image-5.4.0-1129-raspiUpgrade linux-image-raspi-nolpaeUpgrade linux-image-oem-24.04bUpgrade linux-image-awsUpgrade linux-image-6.8.0-1019-gkeUpgrade linux-image-6.11.0-1009-gcpUpgrade linux-image-6.8.0-54-lowlatency-64kUpgrade linux-image-kvmUpgrade linux-image-aws-lts-24.04Upgrade linux-image-azure-lts-20.04Upgrade linux-image-gke-5.15Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-generic-hwe-18.04Upgrade linux-image-nvidia-64kUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-5.4.0-208-genericUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-1022-nvidia-lowlatency-64kUpgrade linux-image-6.11.0-1015-oemUpgrade linux-image-oem-22.04bUpgrade linux-image-5.15.0-1068-nvidia-lowlatencyUpgrade linux-image-6.8.0-1014-azure-nvidiaUpgrade linux-image-6.8.0-57-generic-64kUpgrade linux-image-oem-20.04dUpgrade linux-image-6.8.0-54-generic-64kUpgrade linux-image-6.8.0-1024-gcpUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-5.4.0-1116-fipsUpgrade linux-image-5.4.0-1048-iotUpgrade linux-image-6.8.0-1024-gcp-64kUpgrade linux-image-5.15.0-1068-nvidiaUpgrade linux-image-6.8.0-54-lowlatencyUpgrade linux-image-6.8.0-1022-ibmUpgrade linux-image-oem-24.04aUpgrade linux-image-5.4.0-1086-ibmUpgrade linux-image-5.15.0-127-lowlatencyUpgrade linux-image-gcp-lts-20.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-6.11.0-1005-realtimeUpgrade linux-image-ibm-classicUpgrade linux-image-5.15.0-1066-raspiUpgrade linux-image-5.4.0-1143-gcpUpgrade linux-image-ibm-lts-20.04Upgrade linux-image-6.8.0-1006-gkeopUpgrade linux-image-ibmUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-1023-awsUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-azure-nvidiaUpgrade linux-image-6.8.0-54-genericUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-5.15.0-127-lowlatency-64kUpgrade linux-image-5.15.0-127-generic-64kUpgrade linux-image-gcpUpgrade linux-image-5.15.0-1039-xilinx-zynqmpUpgrade linux-image-5.4.0-1138-oracleUpgrade linux-image-6.11.0-1011-oracleUpgrade linux-image-5.4.0-1058-xilinx-zynqmpUpgrade linux-image-raspiUpgrade linux-image-azure-fdeUpgrade linux-image-aws-lts-20.04Upgrade linux-image-oem-22.04aUpgrade linux-image-azure-cvmUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-oracle-64kUpgrade linux-image-6.11.0-1011-oracle-64kUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-azureUpgrade linux-image-5.4.0-208-generic-lpaeUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.11.0-1009-azureUpgrade linux-image-raspi2Upgrade linux-image-azure-lts-24.04Upgrade linux-image-6.8.0-1022-nvidia-64kUpgrade linux-image-aws-lts-22.04Upgrade linux-image-nvidia-64k-6.8 | 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