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.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-zfcpdump-coreUpgrade kernel-modulesUpgrade kernel-rt-modulesUpgrade kernel-toolsUpgrade kernel-tools-libs-develUpgrade kernel-zfcpdumpUpgrade kernel-rt-debugUpgrade kernel-rt-debug-modules-extraUpgrade bpftoolUpgrade kernel-modules-extraUpgrade kernel-docUpgrade kernel-rtUpgrade perfUpgrade kernel-rt-debug-modulesUpgrade kernel-coreUpgrade kernel-rt-develUpgrade kernel-develUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-kvmUpgrade kernel-debug-modulesUpgrade kernel-tools-libsUpgrade kernel-rt-debug-kvmUpgrade kernel-debug-develUpgrade kernel-debug-coreUpgrade kernelUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-rt-modules-extraUpgrade kernel-rt-debug-coreUpgrade kernel-headersUpgrade kernel-rt-coreUpgrade kernel-debug-modules-extraUpgrade kernel-rt-debug-develUpgrade kernel-zfcpdump-develUpgrade kernel-debugUpgrade kernel-cross-headersUpgrade kernel-abi-stablelistsUpgrade python3-perf | Aug 12, 2024 | May 1, 2024 |
| Amazon Linux Ami 2 | — | Upgrade python-perfUpgrade python-perf-debuginfoUpgrade kernel-toolsUpgrade bpftool-debuginfoUpgrade bpftoolUpgrade kernel-livepatch-5.15.156-102.160Upgrade kernel-debuginfo-common-x86_64Upgrade kernel-headersUpgrade perf-debuginfoUpgrade kernel-debuginfoUpgrade perfUpgrade kernel-tools-debuginfoUpgrade kernel-livepatch-5.10.215-203.850Upgrade kernel-debuginfo-common-aarch64Upgrade kernel-develUpgrade kernelUpgrade kernel-tools-devel | Aug 14, 2024 | May 1, 2024 |
| Amazon_linux_2023 | — | Upgrade bpftool-debuginfoUpgrade kernel-libbpf-staticUpgrade python3-perfUpgrade kernel-modules-extraUpgrade kernel-develUpgrade kernel-toolsUpgrade kernelUpgrade kernel-tools-debuginfoUpgrade python3-perf-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade bpftoolUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-libbpfUpgrade kernel-libbpf-develUpgrade kernel-livepatch-6.1.84-99.169Upgrade kernel-tools-develUpgrade perfUpgrade kernel-modules-extra-commonUpgrade kernel-headersUpgrade perf-debuginfoUpgrade kernel-debuginfo | 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-abi-stablelistsUpgrade kernel-toolsUpgrade kernel-tools-libsUpgrade bpftoolUpgrade kernelUpgrade python3-perf | Oct 8, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade bpftoolUpgrade kernel-tools-libsUpgrade kernelUpgrade python3-perfUpgrade kernel-toolsUpgrade kernel-abi-stablelists | Oct 8, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade python3-perfUpgrade kernelUpgrade kernel-tools-libsUpgrade kernel-tools | Jul 17, 2024 | May 1, 2024 |
| Oracle_linux | — | Upgrade kernelUpgrade kernel-uek | Aug 16, 2024 | May 1, 2024 |
| Redhat_linux | — | Upgrade kernelNo solution existsUpgrade kernel-rt | Aug 12, 2024 | May 1, 2024 |
| Rocky_linux | — | Upgrade kernel-modules-extraUpgrade kernel-rt-debug-kvmUpgrade kernel-cross-headersUpgrade kernel-tools-libsUpgrade kernelUpgrade kernel-debug-coreUpgrade kernel-develUpgrade kernel-rt-debug-modulesUpgrade perf-debuginfoUpgrade python3-perf-debuginfoUpgrade kernel-headersUpgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-modulesUpgrade kernel-rt-debug-develUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-rt-debugUpgrade kernel-debugUpgrade kernel-coreUpgrade python3-perfUpgrade kernel-debug-develUpgrade kernel-rt-coreUpgrade kernel-rt-modulesUpgrade kernel-rt-kvmUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-debug-debuginfoUpgrade kernel-toolsUpgrade kernel-rt-debug-coreUpgrade kernel-debug-modules-extraUpgrade kernel-rt-debuginfoUpgrade bpftoolUpgrade kernel-rtUpgrade kernel-rt-develUpgrade kernel-debug-debuginfoUpgrade bpftool-debuginfoUpgrade perfUpgrade kernel-debug-modulesUpgrade kernel-rt-modules-extraUpgrade kernel-tools-libs-devel | Aug 22, 2024 | May 1, 2024 |
| Suse | — | Upgrade kernel-debug-develUpgrade dlm-kmp-rtUpgrade kernel-64kb-extraUpgrade dtb-renesasUpgrade gfs2-kmp-azureUpgrade dtb-exynosUpgrade kernel-source-rtUpgrade kernel-default-optionalUpgrade kernel-default-develUpgrade kernel-rt-livepatchUpgrade kernel-rt-extraUpgrade kernel-64kb-develUpgrade reiserfs-kmp-64kbUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-default-livepatch-develUpgrade dtb-freescaleUpgrade dtb-allwinnerUpgrade dlm-kmp-64kbUpgrade kernel-rt-optionalUpgrade kernel-obs-buildUpgrade kernel-develUpgrade dtb-mediatekUpgrade kernel-sourceUpgrade dtb-lgUpgrade ocfs2-kmp-azureUpgrade dtb-qcomUpgrade ocfs2-kmp-64kbUpgrade dtb-xilinxUpgrade kernel-azureUpgrade dtb-rockchipUpgrade cluster-md-kmp-64kbUpgrade kernel-devel-rtUpgrade cluster-md-kmp-azureUpgrade kernel-default-base-rebuildUpgrade kernel-debugUpgrade kernel-64kb-optionalUpgrade dtb-sprdUpgrade dtb-hisiliconUpgrade dtb-amazonUpgrade dtb-alteraUpgrade kernel-rt_debug-develUpgrade kernel-default-livepatchUpgrade kernel-source-azureUpgrade kselftests-kmp-64kbUpgrade kselftests-kmp-azureUpgrade cluster-md-kmp-rtUpgrade reiserfs-kmp-azureUpgrade kernel-source-vanillaUpgrade kernel-debug-vdsoUpgrade ocfs2-kmp-defaultUpgrade kernel-64kbUpgrade gfs2-kmp-defaultUpgrade dtb-caviumUpgrade reiserfs-kmp-defaultUpgrade kernel-default-vdsoUpgrade kernel-azure-optionalUpgrade kernel-rt-develUpgrade kernel-kvmsmallUpgrade kernel-rtUpgrade kernel-obs-qaUpgrade kernel-debug-livepatch-develUpgrade kernel-rt_debug-vdsoUpgrade dlm-kmp-azureUpgrade kernel-azure-livepatch-develUpgrade kernel-symsUpgrade kernel-default-manUpgrade kernel-syms-rtUpgrade dlm-kmp-defaultUpgrade dtb-amlogicUpgrade kselftests-kmp-rtUpgrade dtb-nvidiaUpgrade kernel-64kb-livepatch-develUpgrade gfs2-kmp-64kbUpgrade dtb-appleUpgrade kernel-azure-baseUpgrade kernel-kvmsmall-vdsoUpgrade kernel-docsUpgrade dtb-apmUpgrade kernel-macrosUpgrade kernel-default-baseUpgrade kernel-zfcpdumpUpgrade ocfs2-kmp-rtUpgrade kernel-rt-vdsoUpgrade dtb-broadcomUpgrade kselftests-kmp-defaultUpgrade kernel-syms-azureUpgrade kernel-rt_debugUpgrade kernel-rt-livepatch-develUpgrade kernel-default-extraUpgrade dtb-marvellUpgrade kernel-azure-extraUpgrade kernel-defaultUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-devel-azureUpgrade dtb-amdUpgrade reiserfs-kmp-rtUpgrade dtb-armUpgrade kernel-azure-develUpgrade kernel-kvmsmall-develUpgrade cluster-md-kmp-defaultUpgrade kernel-docs-htmlUpgrade dtb-socionextUpgrade kernel-azure-vdsoUpgrade gfs2-kmp-rt | Jun 12, 2024 | May 1, 2024 |
| Ubuntu | — | Upgrade linux-image-raspi-nolpaeUpgrade linux-image-6.8.0-35-lowlatencyUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-oem-20.04Upgrade linux-image-6.8.0-1008-azureUpgrade linux-image-nvidiaUpgrade linux-image-generic-64kUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.15.0-1058-raspiUpgrade linux-image-6.8.0-1006-oemUpgrade linux-image-6.8.0-1005-raspiUpgrade linux-image-6.8.0-1004-gkeUpgrade linux-image-5.15.0-116-generic-lpaeUpgrade linux-image-oracleUpgrade linux-image-5.15.0-1065-gcpUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-lowlatencyUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-6.8.0-1006-oracle-64kUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.8.0-35-generic-64kUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-gkeUpgrade linux-image-gkeopUpgrade linux-image-azure-lts-22.04Upgrade linux-image-oem-20.04bUpgrade linux-image-5.15.0-1062-kvmUpgrade linux-image-5.15.0-1063-oracleUpgrade linux-image-5.15.0-1068-azureUpgrade linux-image-ibmUpgrade linux-image-5.15.0-1062-gkeUpgrade linux-image-genericUpgrade linux-image-intelUpgrade linux-image-gke-5.15Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-5.15.0-116-lowlatency-64kUpgrade linux-image-gcpUpgrade linux-image-5.15.0-116-generic-64kUpgrade linux-image-5.15.0-1048-gkeopUpgrade linux-image-5.15.0-1064-gcpUpgrade linux-image-5.15.0-1060-nvidiaUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-ibm-classicUpgrade linux-image-aws-lts-22.04Upgrade linux-image-5.15.0-1068-azure-fdeUpgrade linux-image-6.8.0-35-lowlatency-64kUpgrade linux-image-virtualUpgrade linux-image-6.8.0-1008-gcpUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-azure-cvmUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-6.8.0-1008-azure-fdeUpgrade linux-image-5.15.0-116-genericUpgrade linux-image-azure-fdeUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-kvmUpgrade linux-image-oracle-64kUpgrade linux-image-azureUpgrade linux-image-oem-20.04cUpgrade linux-image-6.8.0-1006-ibmUpgrade linux-image-intel-iotgUpgrade linux-image-5.15.0-1060-nvidia-lowlatencyUpgrade linux-image-5.15.0-116-lowlatencyUpgrade linux-image-6.8.0-1006-oracleUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-raspiUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-6.8.0-1009-awsUpgrade linux-image-5.15.0-1065-awsUpgrade linux-image-oem-24.04Upgrade linux-image-awsUpgrade linux-image-5.15.0-1058-ibmUpgrade linux-image-6.8.0-35-genericUpgrade linux-image-oem-24.04aUpgrade linux-image-oem-20.04dUpgrade linux-image-5.15.0-1035-xilinx-zynqmpUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-5.15.0-1060-intel-iotg | 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 |
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