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