In the Linux kernel, the following vulnerability has been resolved:
nfs: fix UAF in direct writes
In production we have been hitting the following warning consistently
------------[ cut here ]------------ refcount_t: underflow; use-after-free. WARNING: CPU: 17 PID: 1800359 at lib/refcount.c:28 refcount_warn_saturate+0x9c/0xe0 Workqueue: nfsiod nfs_direct_write_schedule_work [nfs] RIP: 0010:refcount_warn_saturate+0x9c/0xe0 PKRU: 55555554 Call Trace: <TASK> ? __warn+0x9f/0x130 ? refcount_warn_saturate+0x9c/0xe0 ? report_bug+0xcc/0x150 ? handle_bug+0x3d/0x70 ? exc_invalid_op+0x16/0x40 ? asm_exc_invalid_op+0x16/0x20 ? refcount_warn_saturate+0x9c/0xe0 nfs_direct_write_schedule_work+0x237/0x250 [nfs] process_one_work+0x12f/0x4a0 worker_thread+0x14e/0x3b0 ? ZSTD_getCParams_internal+0x220/0x220 kthread+0xdc/0x120 ? __btf_name_valid+0xa0/0xa0 ret_from_fork+0x1f/0x30
This is because we're completing the nfs_direct_request twice in a row.
The source of this is when we have our commit requests to submit, we process them and send them off, and then in the completion path for the commit requests we have
if (nfs_commit_end(cinfo.mds)) nfs_direct_write_complete(dreq);
However since we're submitting asynchronous requests we sometimes have one that completes before we submit the next one, so we end up calling complete on the nfs_direct_request twice.
The only other place we use nfs_generic_commit_list() is in __nfs_commit_inode, which wraps this call in a
nfs_commit_begin(); nfs_commit_end();
Which is a common pattern for this style of completion handling, one that is also repeated in the direct code with get_dreq()/put_dreq() calls around where we process events as well as in the completion paths.
Fix this by using the same pattern for the commit requests.
Before with my 200 node rocksdb stress running this warning would pop every 10ish minutes. With my patch the stress test has been running for several hours without popping.
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-tools-libs-develUpgrade kernel-rt-modulesUpgrade kernel-docUpgrade kernel-zfcpdumpUpgrade kernel-toolsUpgrade kernel-develUpgrade kernel-coreUpgrade kernel-rt-develUpgrade kernel-modules-extraUpgrade perfUpgrade kernel-rtUpgrade kernel-modulesUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-debugUpgrade kernel-zfcpdump-coreUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-debug-modulesUpgrade bpftoolUpgrade kernel-rt-kvmUpgrade kernel-rt-debug-develUpgrade kernel-headersUpgrade kernel-rt-modules-extraUpgrade kernel-abi-stablelistsUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-debug-modules-extraUpgrade kernel-debug-develUpgrade kernel-rt-coreUpgrade kernel-debug-modulesUpgrade kernel-debugUpgrade kernel-debug-coreUpgrade kernelUpgrade kernel-rt-debug-kvmUpgrade kernel-zfcpdump-develUpgrade python3-perfUpgrade kernel-cross-headersUpgrade kernel-rt-debug-coreUpgrade kernel-tools-libs | Aug 12, 2024 | May 1, 2024 |
| Amazon Linux Ami 2 | — | Upgrade kernelUpgrade perf-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-develUpgrade kernel-debuginfoUpgrade kernel-headersUpgrade kernel-livepatch-5.10.215-203.850Upgrade perfUpgrade kernel-tools-develUpgrade kernel-tools-debuginfoUpgrade python-perf-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade bpftool-debuginfoUpgrade kernel-livepatch-5.15.156-102.160Upgrade bpftoolUpgrade kernel-toolsUpgrade python-perf | Aug 14, 2024 | May 1, 2024 |
| Amazon_linux_2023 | — | Upgrade bpftool-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-libbpf-develUpgrade kernel-libbpfUpgrade kernelUpgrade kernel-develUpgrade kernel-modules-extraUpgrade kernel-libbpf-staticUpgrade python3-perfUpgrade python3-perf-debuginfoUpgrade bpftoolUpgrade kernel-toolsUpgrade kernel-debuginfoUpgrade kernel-modules-extra-commonUpgrade kernel-headersUpgrade perf-debuginfoUpgrade perfUpgrade kernel-livepatch-6.1.84-99.169Upgrade kernel-tools-devel | Feb 17, 2025 | May 1, 2024 |
| Debian | — | Upgrade linux | May 8, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernel-abi-stablelistsUpgrade kernelUpgrade kernel-toolsUpgrade python3-perfUpgrade kernel-tools-libs | Jul 16, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-tools-libsUpgrade kernelUpgrade bpftoolUpgrade python3-perfUpgrade kernel-abi-stablelistsUpgrade kernel-tools | Oct 8, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade bpftoolUpgrade python3-perfUpgrade kernelUpgrade kernel-tools-libsUpgrade kernel-abi-stablelistsUpgrade kernel-tools | Oct 8, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade kernel-tools-libsUpgrade kernel-toolsUpgrade kernelUpgrade python3-perf | Jul 17, 2024 | May 1, 2024 |
| Oracle_linux | — | Upgrade kernel-uekUpgrade kernel | Aug 16, 2024 | May 1, 2024 |
| Redhat_linux | — | No solution existsUpgrade kernel-rtUpgrade kernel | Aug 12, 2024 | May 1, 2024 |
| Rocky_linux | — | Upgrade kernel-rt-develUpgrade kernel-rt-modules-extraUpgrade kernel-tools-libs-develUpgrade kernel-rt-debug-coreUpgrade kernel-toolsUpgrade kernel-rt-debug-debuginfoUpgrade kernel-rtUpgrade bpftoolUpgrade kernel-rt-debug-modules-extraUpgrade kernel-debug-modulesUpgrade kernel-rt-modulesUpgrade bpftool-debuginfoUpgrade kernel-debug-modules-extraUpgrade kernel-debug-debuginfoUpgrade perfUpgrade kernel-rt-debuginfoUpgrade kernel-rt-kvmUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-debugUpgrade kernel-tools-libsUpgrade kernel-rt-debug-develUpgrade kernelUpgrade kernel-headersUpgrade kernel-debug-coreUpgrade python3-perf-debuginfoUpgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-rt-coreUpgrade kernel-modulesUpgrade kernel-develUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-debug-develUpgrade kernel-tools-debuginfoUpgrade kernel-modules-extraUpgrade kernel-coreUpgrade perf-debuginfoUpgrade kernel-debuginfoUpgrade python3-perfUpgrade kernel-debugUpgrade kernel-rt-debug-kvmUpgrade kernel-cross-headers | Aug 22, 2024 | May 1, 2024 |
| Suse | — | Upgrade kernel-debug-vdsoUpgrade reiserfs-kmp-64kbUpgrade dtb-mediatekUpgrade kernel-rt-livepatchUpgrade kernel-devel-rtUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-default-livepatch-develUpgrade kernel-obs-buildUpgrade dtb-allwinnerUpgrade kernel-sourceUpgrade cluster-md-kmp-64kbUpgrade ocfs2-kmp-64kbUpgrade dtb-rockchipUpgrade kernel-rt-optionalUpgrade cluster-md-kmp-azureUpgrade dtb-caviumUpgrade kernel-64kbUpgrade reiserfs-kmp-defaultUpgrade dtb-freescaleUpgrade dtb-qcomUpgrade kernel-azureUpgrade kernel-64kb-extraUpgrade kselftests-kmp-64kbUpgrade kernel-64kb-develUpgrade dtb-xilinxUpgrade ocfs2-kmp-defaultUpgrade kernel-source-rtUpgrade ocfs2-kmp-azureUpgrade dtb-lgUpgrade gfs2-kmp-defaultUpgrade kernel-debugUpgrade kernel-develUpgrade dtb-amazonUpgrade kernel-rt-develUpgrade dtb-alteraUpgrade dtb-sprdUpgrade kernel-source-azureUpgrade kernel-azure-optionalUpgrade gfs2-kmp-azureUpgrade dtb-hisiliconUpgrade kselftests-kmp-azureUpgrade kernel-rt_debug-develUpgrade dtb-renesasUpgrade kernel-default-develUpgrade kernel-rt-extraUpgrade kernel-default-livepatchUpgrade kernel-64kb-optionalUpgrade kernel-default-vdsoUpgrade kernel-default-base-rebuildUpgrade dlm-kmp-64kbUpgrade kernel-debug-develUpgrade kernel-default-optionalUpgrade cluster-md-kmp-rtUpgrade dlm-kmp-rtUpgrade reiserfs-kmp-azureUpgrade dtb-exynosUpgrade kernel-source-vanillaUpgrade kernel-rt-livepatch-develUpgrade kernel-syms-azureUpgrade kernel-default-manUpgrade kernel-rt_debugUpgrade kernel-obs-qaUpgrade dlm-kmp-defaultUpgrade kernel-macrosUpgrade kernel-azure-vdsoUpgrade dtb-apmUpgrade ocfs2-kmp-rtUpgrade dlm-kmp-azureUpgrade kernel-kvmsmall-develUpgrade kernel-docs-htmlUpgrade cluster-md-kmp-defaultUpgrade gfs2-kmp-rtUpgrade kselftests-kmp-rtUpgrade kernel-syms-rtUpgrade kernel-kvmsmall-vdsoUpgrade kernel-azure-baseUpgrade kernel-64kb-livepatch-develUpgrade dtb-appleUpgrade kernel-docsUpgrade gfs2-kmp-64kbUpgrade dtb-nvidiaUpgrade dtb-armUpgrade kernel-default-baseUpgrade kernel-rt-vdsoUpgrade reiserfs-kmp-rtUpgrade kernel-rt_debug-vdsoUpgrade kernel-rtUpgrade kernel-kvmsmallUpgrade kernel-default-extraUpgrade kernel-debug-livepatch-develUpgrade kernel-azure-develUpgrade dtb-broadcomUpgrade dtb-amlogicUpgrade kernel-azure-extraUpgrade kselftests-kmp-defaultUpgrade dtb-marvellUpgrade kernel-zfcpdumpUpgrade kernel-defaultUpgrade kernel-devel-azureUpgrade dtb-amdUpgrade kernel-azure-livepatch-develUpgrade kernel-symsUpgrade kernel-kvmsmall-livepatch-develUpgrade dtb-socionext | Jun 12, 2024 | May 1, 2024 |
| Ubuntu | — | Upgrade linux-image-raspi-nolpaeUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-5.15.0-116-generic-lpaeUpgrade linux-image-lowlatency-64kUpgrade linux-image-5.15.0-1065-gcpUpgrade linux-image-oem-20.04Upgrade linux-image-gkeUpgrade linux-image-6.8.0-35-lowlatencyUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-1006-oracle-64kUpgrade linux-image-generic-64kUpgrade linux-image-gke-5.15Upgrade linux-image-generic-lpaeUpgrade linux-image-oem-20.04bUpgrade linux-image-azure-lts-22.04Upgrade linux-image-nvidiaUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-6.8.0-1008-azureUpgrade linux-image-oracleUpgrade linux-image-intelUpgrade linux-image-gkeopUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.15.0-1068-azureUpgrade linux-image-5.15.0-1062-kvmUpgrade linux-image-5.15.0-1062-gkeUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-genericUpgrade linux-image-5.15.0-1063-oracleUpgrade linux-image-5.15.0-116-lowlatency-64kUpgrade linux-image-6.8.0-35-generic-64kUpgrade linux-image-6.8.0-1004-gkeUpgrade linux-image-6.8.0-1005-raspiUpgrade linux-image-ibmUpgrade linux-image-6.8.0-1006-oemUpgrade linux-image-5.15.0-1058-raspiUpgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-1009-awsUpgrade linux-image-raspiUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-oem-24.04Upgrade linux-image-5.15.0-116-generic-64kUpgrade linux-image-aws-lts-22.04Upgrade linux-image-oem-20.04cUpgrade linux-image-6.8.0-1008-gcpUpgrade linux-image-5.15.0-1064-gcpUpgrade linux-image-5.15.0-1065-awsUpgrade linux-image-oem-24.04aUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-5.15.0-1058-ibmUpgrade linux-image-6.8.0-35-genericUpgrade linux-image-5.15.0-116-lowlatencyUpgrade linux-image-oem-20.04dUpgrade linux-image-kvmUpgrade linux-image-azure-fdeUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-1008-azure-fdeUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-awsUpgrade linux-image-5.15.0-116-genericUpgrade linux-image-6.8.0-35-lowlatency-64kUpgrade linux-image-azureUpgrade linux-image-intel-iotgUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-6.8.0-1006-oracleUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-5.15.0-1035-xilinx-zynqmpUpgrade linux-image-azure-cvmUpgrade linux-image-5.15.0-1060-nvidia-lowlatencyUpgrade linux-image-ibm-classicUpgrade linux-image-gkeop-5.15Upgrade linux-image-oracle-64kUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-6.8.0-1006-ibmUpgrade linux-image-gcpUpgrade linux-image-5.15.0-1068-azure-fdeUpgrade linux-image-5.15.0-1048-gkeopUpgrade linux-image-5.15.0-1060-intel-iotgUpgrade linux-image-virtualUpgrade linux-image-5.15.0-1060-nvidia | Jul 1, 2024 | May 1, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | May 1, 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