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