Skip to content
OpenAdvisories
High · 7.8 CVE-2024-47679 EUVD-2024-42600GHSA-9p2r-69c4-v82v

vfs: fix race between evice_inodes() and find_inode()&iput()

Published Oct 21, 2024 · Updated Aug 5, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: kernel Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.15 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.4 Package: linux-aws-5.8 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-6.8 Package: linux-aws-fips Package: linux-aws-hwe Package: linux-azure Package: linux-azure-4.15 Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.15 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.4 Package: linux-azure-5.8 Package: linux-azure-6.11 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-6.8 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.2 Package: linux-azure-fips Package: linux-azure-nvidia Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-4.15 Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.15 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.4 Package: linux-gcp-5.8 Package: linux-gcp-6.11 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-6.8 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.15 Package: linux-hwe-5.19 Package: linux-hwe-5.4 Package: linux-hwe-5.8 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-6.8 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.15 Package: linux-ibm-5.4 Package: linux-ibm-6.8 Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg Package: linux-intel-iotg-5.15 Package: linux-iot Package: linux-kvm Package: linux-lowlatency Package: linux-lowlatency-hwe-5.15 Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-lowlatency-hwe-6.8 Package: linux-lts-xenial Package: linux-nvidia Package: linux-nvidia-6.11 Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-6.8 Package: linux-nvidia-lowlatency Package: linux-nvidia-tegra Package: linux-nvidia-tegra-5.15 Package: linux-nvidia-tegra-igx Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.11 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.15 Package: linux-oracle-5.3 Package: linux-oracle-5.4 Package: linux-oracle-5.8 Package: linux-oracle-6.5 Package: linux-oracle-6.8 Package: linux-raspi Package: linux-raspi-5.4 Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-realtime-6.8 Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.15 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.5 Package: linux-riscv-6.8 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Azure Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

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/000000000000eabe1d0619c48986@google.com/
[2]: The reason might be 1. SB_ACTIVE was removed or 2. mapping_shrinkable()
return false when I reproduced the bug.

Affected products

VendorProductAffectedFixed
Linux Linux 2.6.37 4.19.323

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 6.11.2-1 —
Debian 13 linux 6.11.2-1 —
Debian 12 linux 6.1.115-1 —
Debian 11 linux 5.10.234-1 DLA-4075-1
Debian 11 linux-6.1 6.1.119-1~deb11u1 DLA-4008-1
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield 5.15.0-1057.59 —
Ubuntu 24.04 LTS linux 6.8.0-54.56 USN-7301-1
Ubuntu 24.04 LTS linux-aws 6.8.0-1023.25 USN-7311-1
Ubuntu 24.04 LTS linux-azure 6.8.0-1025.30 USN-7384-1
Ubuntu 24.04 LTS linux-azure-6.11 6.11.0-1012.12~24.04.1 —
Ubuntu 24.04 LTS linux-azure-nvidia 6.8.0-1014.15 USN-7468-1
Ubuntu 24.04 LTS linux-gcp 6.8.0-1024.26 USN-7304-1
Ubuntu 24.04 LTS linux-gcp-6.11 6.11.0-1011.11~24.04.1 —
Ubuntu 24.04 LTS linux-gke +1 6.8.0-1019.23 USN-7304-1, USN-7303-3
Ubuntu 24.04 LTS linux-gkeop 6.8.0-1006.8 USN-7304-1
Ubuntu 24.04 LTS linux-ibm 6.8.0-1022.22 USN-7385-1
Ubuntu 24.04 LTS linux-lowlatency 6.8.0-54.56.1 USN-7301-1
Ubuntu 24.04 LTS linux-nvidia 6.8.0-1022.25 USN-7303-1
Ubuntu 24.04 LTS linux-nvidia-6.11 6.11.0-1007.7 —
Ubuntu 24.04 LTS linux-nvidia-lowlatency 6.8.0-1022.25.2 USN-7303-1
Ubuntu 24.04 LTS linux-oem-6.11 6.11.0-1015.15 USN-7310-1
Ubuntu 24.04 LTS linux-oem-6.8 6.8.0-1024.24 USN-7386-1
Ubuntu 24.04 LTS linux-oracle 6.8.0-1020.21 USN-7303-2
Ubuntu 24.04 LTS linux-realtime No fix yet —
Ubuntu 24.04 LTS linux-riscv 6.8.0-53.55.1 —
Ubuntu 24.04 LTS linux-xilinx 6.8.0-1017.18 —
Ubuntu 22.04 LTS linux +1 5.15.0-127.137 USN-7166-1
Ubuntu 22.04 LTS linux-aws 5.15.0-1073.79 USN-7166-2
Ubuntu 22.04 LTS linux-aws-6.8 6.8.0-1023.25~22.04.1 USN-7311-1
Ubuntu 22.04 LTS linux-azure 5.15.0-1078.87 USN-7186-2
Ubuntu 22.04 LTS linux-azure-6.8 6.8.0-1025.30~22.04.1 USN-7384-2
Ubuntu 22.04 LTS linux-azure-fde 5.15.0-1078.87.1 —
Ubuntu 22.04 LTS linux-gcp 5.15.0-1072.80 USN-7166-1
Ubuntu 22.04 LTS linux-gcp-6.8 6.8.0-1024.26~22.04.1 USN-7303-3
Ubuntu 22.04 LTS linux-gke 5.15.0-1070.76 USN-7166-1
Ubuntu 22.04 LTS linux-gkeop 5.15.0-1056.63 USN-7166-1
Ubuntu 22.04 LTS linux-hwe-6.8 6.8.0-57.59~22.04.1 USN-7403-1
Ubuntu 22.04 LTS linux-ibm +1 5.15.0-1066.69 USN-7166-1
Ubuntu 22.04 LTS linux-ibm-6.8 6.8.0-1023.23~22.04.1 —
Ubuntu 22.04 LTS linux-kvm 5.15.0-1070.75 USN-7166-1
Ubuntu 22.04 LTS linux-lowlatency-hwe-6.8 6.8.0-54.56.1~22.04.1 USN-7301-1
Ubuntu 22.04 LTS linux-nvidia 5.15.0-1068.69 USN-7166-1
Ubuntu 22.04 LTS linux-nvidia-6.8 6.8.0-1022.25~22.04.2 USN-7303-1
Ubuntu 22.04 LTS linux-nvidia-tegra 5.15.0-1032.32 —
Ubuntu 22.04 LTS linux-nvidia-tegra-igx 5.15.0-1020.20 —
Ubuntu 22.04 LTS linux-oracle +1 5.15.0-1071.77 USN-7186-1, USN-7166-1
Ubuntu 22.04 LTS linux-oracle-6.8 6.8.0-1020.21~22.04.1 USN-7303-2
Ubuntu 22.04 LTS linux-riscv +31 No fix yet —
Ubuntu 22.04 LTS linux-riscv-6.8 6.8.0-53.55.1~22.04.1 —
Ubuntu 22.04 LTS linux-xilinx-zynqmp 5.15.0-1039.43 USN-7166-4
Ubuntu 20.04 LTS linux 5.4.0-208.228 USN-7293-1
Ubuntu 20.04 LTS linux-aws 5.4.0-1140.150 USN-7294-2
Ubuntu 20.04 LTS linux-aws-5.15 5.15.0-1073.79~20.04.1 USN-7166-2
Ubuntu 20.04 LTS linux-azure 5.4.0-1145.152 USN-7294-1
Ubuntu 20.04 LTS linux-azure-5.15 5.15.0-1078.87~20.04.1 USN-7194-1
Ubuntu 20.04 LTS linux-bluefield 5.4.0-1099.106 USN-7294-1
Ubuntu 20.04 LTS linux-gcp 5.4.0-1143.152 USN-7294-1
Ubuntu 20.04 LTS linux-gcp-5.15 5.15.0-1072.80~20.04.1 USN-7166-1
Ubuntu 20.04 LTS linux-gke +28 No fix yet —
Ubuntu 20.04 LTS linux-hwe-5.15 +1 5.15.0-127.137~20.04.1 USN-7166-3, USN-7166-1
Ubuntu 20.04 LTS linux-ibm 5.4.0-1086.91 USN-7294-3
Ubuntu 20.04 LTS linux-ibm-5.15 5.15.0-1066.69~20.04.1 USN-7166-1
Ubuntu 20.04 LTS linux-iot 5.4.0-1048.51 USN-7413-1
Ubuntu 20.04 LTS linux-kvm 5.4.0-1127.136 USN-7294-4
Ubuntu 20.04 LTS linux-nvidia-tegra-5.15 5.15.0-1032.32~20.04.1 —
Ubuntu 20.04 LTS linux-oracle 5.4.0-1138.147 USN-7294-2
Ubuntu 20.04 LTS linux-oracle-5.15 +1 5.15.0-1071.77~20.04.1 USN-7186-2, USN-7166-1
Ubuntu 20.04 LTS linux-raspi 5.4.0-1129.142 USN-7539-1
Ubuntu 20.04 LTS linux-riscv-5.15 5.15.0-1069.73~20.04.1 —
Ubuntu 20.04 LTS linux-xilinx-zynqmp 5.4.0-1058.62 USN-7295-1
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Show 15 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Ubuntu Pro Realtime 24.04 LTS linux-raspi-realtime 6.8.0-2018.19 —
Ubuntu Pro Realtime 24.04 LTS linux-realtime 6.8.1-1016.17 —
Ubuntu Pro Realtime 22.04 LTS linux-intel-iot-realtime 5.15.0-1066.68 —
Ubuntu Pro Realtime 22.04 LTS linux-realtime 5.15.0-1074.82 —
Ubuntu Pro Realtime 22.04 LTS linux-realtime-6.8 6.8.1-1016.17~22.04.1 —
Ubuntu Pro FIPS 20.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS 18.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS 16.04 LTS linux-fips No fix yet —
Ubuntu Pro FIPS-updates 24.04 LTS linux-fips 6.8.0-78.78+fips1 —
Ubuntu Pro FIPS-updates 22.04 LTS linux-aws-fips 5.15.0-1073.79+fips1 —
Ubuntu Pro FIPS-updates 22.04 LTS linux-azure-fips 5.15.0-1078.87+fips1 —
Ubuntu Pro FIPS-updates 22.04 LTS linux-fips 5.15.0-127.137+fips1 —
Ubuntu Pro FIPS-updates 22.04 LTS linux-gcp-fips 5.15.0-1072.80+fips1 —
Ubuntu Pro FIPS-updates 20.04 LTS linux-aws-fips 5.4.0-1140.151+fips1 —
Ubuntu Pro FIPS-updates 20.04 LTS linux-azure-fips 5.4.0-1145.152+fips1 —
Ubuntu Pro FIPS-updates 20.04 LTS linux-fips 5.4.0-1116.126 USN-7393-1
Ubuntu Pro FIPS-updates 20.04 LTS linux-gcp-fips 5.4.0-1143.152+fips1 —
Ubuntu Pro FIPS-updates 18.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-updates 16.04 LTS linux-fips No fix yet —
Ubuntu Pro FIPS-preview 22.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro 18.04 LTS linux +5 No fix yet —
Ubuntu Pro 18.04 LTS linux-aws-5.4 5.4.0-1142.152~18.04.1 USN-7401-1
Ubuntu Pro 18.04 LTS linux-azure-5.4 5.4.0-1145.152~18.04.1 USN-7294-1
Ubuntu Pro 18.04 LTS linux-gcp-5.4 5.4.0-1143.152~18.04.1 USN-7294-1
Ubuntu Pro 18.04 LTS linux-hwe-5.4 5.4.0-208.228~18.04.1 USN-7293-1
Ubuntu Pro 18.04 LTS linux-ibm-5.4 5.4.0-1086.91~18.04.1 USN-7294-1
Ubuntu Pro 18.04 LTS linux-oracle-5.4 5.4.0-1138.147~18.04.1 USN-7294-2
Ubuntu Pro 18.04 LTS linux-raspi-5.4 5.4.0-1129.142~18.04.1 USN-7540-1
Ubuntu Pro 16.04 LTS linux +7 No fix yet —
Ubuntu Pro 14.04 LTS linux +3 No fix yet —
ReleasePackageFixed inAdvisory
RHEL 9 rv +75 5.14.0-611.5.1.el9_7 RHSA-2025:20518

AlmaLinux

Errata ↗
ReleasePackageFixed inAdvisory
AlmaLinux 9 rv +73 5.14.0-611.5.1.el9_7 ALSA-2025:20518

Rocky Linux

Errata ↗
ReleasePackageFixed inAdvisory
Rocky Linux 9 kernel 5.14.0-611.5.1.el9_7 RLSA-2025:20518
ReleasePackageFixed inAdvisory
SLES 15 SP6 kernel-64kb +6 6.4.0-150600.23.30.1 SUSE-SU-2024:4318-1
SLES 15 SP6 kernel-azure +2 6.4.0-150600.8.20.1 SUSE-SU-2024:4316-1
SLES 15 SP6 kernel-coco +3 6.4.0-15061.9.coco15sp6.1 SUSE-SU-2024:4387-1
SLES 15 SP6 kernel-default-base 6.4.0-150600.23.30.1.150600.12.12.6 SUSE-SU-2024:4318-1
SLES 15 SP5 kernel-64kb +6 5.14.21-150500.55.88.1 SUSE-SU-2024:4364-1
SLES 15 SP5 kernel-azure +2 5.14.21-150500.33.75.1 SUSE-SU-2024:4376-1
SLES 15 SP5 kernel-default-base 5.14.21-150500.55.88.1.150500.6.39.4 SUSE-SU-2024:4364-1
SLES 12 SP5 kernel-syms +2 4.12.14-122.237.1 SUSE-SU-2025:0035-1
Show 8 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLE Micro 6.1 kernel-default-base 6.4.0-24.1.21.4 SUSE-SU-2025:20247-1
SLE Micro 6.1 kernel-livepatch-MICRO-6-0-RT_Update_4 1-1.1 SUSE-SU-2025:20246-1
SLE Micro 6.1 kernel-livepatch-MICRO-6-0_Update_4 1-1.2 SUSE-SU-2025:20247-1
SLE Micro 6.1 kernel-rt +1 6.4.0-22.1 SUSE-SU-2025:20246-1
SLE Micro 6.1 kernel-source +2 6.4.0-24.1 SUSE-SU-2025:20247-1
SLE Micro 6.0 kernel-default-base 6.4.0-24.1.21.4 SUSE-SU-2025:20164-1
SLE Micro 6.0 kernel-livepatch-MICRO-6-0-RT_Update_4 1-1.1 SUSE-SU-2025:20163-1
SLE Micro 6.0 kernel-livepatch-MICRO-6-0_Update_4 1-1.2 SUSE-SU-2025:20164-1
SLE Micro 6.0 kernel-rt +1 6.4.0-22.1 SUSE-SU-2025:20163-1
SLE Micro 6.0 kernel-source +2 6.4.0-24.1 SUSE-SU-2025:20164-1
SLE Micro 5.5 kernel-default 5.14.21-150500.55.88.1 SUSE-SU-2024:4364-1
SLE Micro 5.5 kernel-default-base 5.14.21-150500.55.88.1.150500.6.39.4 SUSE-SU-2024:4364-1
SLE Micro 5.5 kernel-rt +1 5.14.21-150500.13.79.1 SUSE-SU-2024:4315-1
SLE Live Patching 15 SP6 kernel-default 6.4.0-150600.23.30.1 SUSE-SU-2024:4318-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_6 1-150600.1.3.1 SUSE-SU-2024:4314-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_6 1-150600.13.3.5 SUSE-SU-2024:4318-1
SLE Live Patching 15 SP5 kernel-default 5.14.21-150500.55.88.1 SUSE-SU-2024:4364-1
SLE Live Patching 15 SP5 kernel-livepatch-SLE15-SP5-RT_Update_23 1-150500.11.3.1 SUSE-SU-2024:4315-1
SLE Live Patching 15 SP5 kernel-livepatch-SLE15-SP5_Update_21 1-150500.11.5.1 SUSE-SU-2024:4364-1
SLE Live Patching 12 SP5 kernel-default 4.12.14-122.237.1 SUSE-SU-2024:4367-1
SLE Live Patching 12 SP5 kgraft-patch-SLE12-SP5_Update_63 1-8.3.1 SUSE-SU-2024:4367-1
SUSE Real Time Module 15 SP6 kernel-rt +3 6.4.0-150600.10.20.1 SUSE-SU-2024:4314-1
SUSE Real Time Module 15 SP5 kernel-rt +3 5.14.21-150500.13.79.1 SUSE-SU-2024:4315-1
ReleasePackageFixed inAdvisory
openSUSE Tumbleweed kernel-source 6.11.8-1.1 openSUSE-SU-2024:14500-1
openSUSE Tumbleweed kernel-source-longterm 6.12.11-1.1 openSUSE-SU-2025:14705-1
openSUSE Leap 15.6 dtb-aarch64 +10 6.4.0-150600.23.30.1 SUSE-SU-2024:4318-1
openSUSE Leap 15.6 kernel-azure +2 6.4.0-150600.8.20.1 SUSE-SU-2024:4316-1
openSUSE Leap 15.6 kernel-default-base 6.4.0-150600.23.30.1.150600.12.12.6 SUSE-SU-2024:4318-1
openSUSE Leap 15.6 kernel-rt +3 6.4.0-150600.10.20.1 SUSE-SU-2024:4314-1
openSUSE Leap 15.5 kernel-azure +2 5.14.21-150500.33.75.1 SUSE-SU-2024:4376-1
openSUSE Leap 15.5 kernel-rt +3 5.14.21-150500.13.79.1 SUSE-SU-2024:4315-1
Show 1 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
openSUSE Leap Micro 5.5 kernel-rt 5.14.21-150500.13.79.1 SUSE-SU-2024:4315-1

Amazon Linux

ReleasePackageFixed inAdvisory
Amazon Linux 2023 kernel-livepatch-6.1.115-126.197 1.0-0.amzn2023 ALAS2023-2025-794
Amazon Linux 2023 perf +14 6.1.115-126.197.amzn2023 ALAS2023-2025-794

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 3 kernel 6.6.56.1-5 —
Azure Linux 2 (CBL-Mariner) kernel 5.15.173.1-1 —

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 8 bpftool +13 5.15.0-303.171.5.2.el9uek ELSA-2024-12887
Oracle Linux 7 kernel-uek +6 5.4.17-2136.338.4.1.el8uek ELSA-2024-12884
Oracle Linux 7 perf +3 5.4.17-2136.338.4.1.el7uek ELSA-2024-12884

Advisories 50

References