In the Linux kernel, the following vulnerability has been resolved:
nfs: fix panic when nfs4_ff_layout_prepare_ds() fails
We've been seeing the following panic in production
BUG: kernel NULL pointer dereference, address: 0000000000000065 PGD 2f485f067 P4D 2f485f067 PUD 2cc5d8067 PMD 0 RIP: 0010:ff_layout_cancel_io+0x3a/0x90 [nfs_layout_flexfiles] Call Trace: <TASK> ? __die+0x78/0xc0 ? page_fault_oops+0x286/0x380 ? __rpc_execute+0x2c3/0x470 [sunrpc] ? rpc_new_task+0x42/0x1c0 [sunrpc] ? exc_page_fault+0x5d/0x110 ? asm_exc_page_fault+0x22/0x30 ? ff_layout_free_layoutreturn+0x110/0x110 [nfs_layout_flexfiles] ? ff_layout_cancel_io+0x3a/0x90 [nfs_layout_flexfiles] ? ff_layout_cancel_io+0x6f/0x90 [nfs_layout_flexfiles] pnfs_mark_matching_lsegs_return+0x1b0/0x360 [nfsv4] pnfs_error_mark_layout_for_return+0x9e/0x110 [nfsv4] ? ff_layout_send_layouterror+0x50/0x160 [nfs_layout_flexfiles] nfs4_ff_layout_prepare_ds+0x11f/0x290 [nfs_layout_flexfiles] ff_layout_pg_init_write+0xf0/0x1f0 [nfs_layout_flexfiles] __nfs_pageio_add_request+0x154/0x6c0 [nfs] nfs_pageio_add_request+0x26b/0x380 [nfs] nfs_do_writepage+0x111/0x1e0 [nfs] nfs_writepages_callback+0xf/0x30 [nfs] write_cache_pages+0x17f/0x380 ? nfs_pageio_init_write+0x50/0x50 [nfs] ? nfs_writepages+0x6d/0x210 [nfs] ? nfs_writepages+0x6d/0x210 [nfs] nfs_writepages+0x125/0x210 [nfs] do_writepages+0x67/0x220 ? generic_perform_write+0x14b/0x210 filemap_fdatawrite_wbc+0x5b/0x80 file_write_and_wait_range+0x6d/0xc0 nfs_file_fsync+0x81/0x170 [nfs] ? nfs_file_mmap+0x60/0x60 [nfs] __x64_sys_fsync+0x53/0x90 do_syscall_64+0x3d/0x90 entry_SYSCALL_64_after_hwframe+0x46/0xb0
Inspecting the core with drgn I was able to pull this
>>> prog.crashed_thread().stack_trace()[0] #0 at 0xffffffffa079657a (ff_layout_cancel_io+0x3a/0x84) in ff_layout_cancel_io at fs/nfs/flexfilelayout/flexfilelayout.c:2021:27 >>> prog.crashed_thread().stack_trace()[0]['idx'] (u32)1 >>> prog.crashed_thread().stack_trace()[0]['flseg'].mirror_array[1].mirror_ds (struct nfs4_ff_layout_ds *)0xffffffffffffffed
This is clear from the stack trace, we call nfs4_ff_layout_prepare_ds() which could error out initializing the mirror_ds, and then we go to clean it all up and our check is only for if (!mirror->mirror_ds). This is inconsistent with the rest of the users of mirror_ds, which have
if (IS_ERR_OR_NULL(mirror_ds))
to keep from tripping over this exact scenario. Fix this up in ff_layout_cancel_io() to make sure we don't panic when we get an error. I also spot checked all the other instances of checking mirror_ds and we appear to be doing the correct checks everywhere, only unconditionally dereferencing mirror_ds when we know it would be valid.
CVSS Details
- CVSS 3.1 Base Score: 7.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-debug-modules-coreUpgrade kernel-64k-debug-coreUpgrade kernel-tools-libsUpgrade kernel-debug-uki-virtUpgrade kernel-toolsUpgrade kernel-develUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-tools-libs-develUpgrade bpftoolUpgrade kernel-64k-debug-modulesUpgrade python3-perfUpgrade kernel-rt-develUpgrade kernel-zfcpdump-coreUpgrade kernel-rt-modules-coreUpgrade kernel-rt-modules-extraUpgrade kernel-64k-modules-extraUpgrade kernel-64k-debugUpgrade kernel-debug-modulesUpgrade perfUpgrade kernel-rtUpgrade rvUpgrade kernel-rt-modulesUpgrade kernel-64k-debug-develUpgrade kernel-rt-debug-modules-coreUpgrade kernel-rt-debugUpgrade kernel-rt-debug-coreUpgrade kernel-docUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-64k-debug-modules-coreUpgrade kernel-uki-virtUpgrade kernel-headersUpgrade kernel-rt-debug-modules-extraUpgrade kernel-modules-extraUpgrade kernel-debug-coreUpgrade kernel-64k-devel-matchedUpgrade kernel-64k-modules-coreUpgrade rtlaUpgrade kernel-rt-debug-develUpgrade kernel-64k-modulesUpgrade kernelUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-abi-stablelistsUpgrade kernel-debug-develUpgrade kernel-64k-develUpgrade kernel-zfcpdump-modulesUpgrade kernel-debugUpgrade kernel-debug-modules-extraUpgrade kernel-cross-headersUpgrade kernel-64kUpgrade kernel-zfcpdumpUpgrade kernel-modules-coreUpgrade kernel-modulesUpgrade kernel-coreUpgrade kernel-rt-coreUpgrade libperfUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-debug-devel-matchedUpgrade kernel-rt-debug-modulesUpgrade kernel-64k-coreUpgrade kernel-devel-matchedUpgrade kernel-64k-debug-modules-extraUpgrade kernel-zfcpdump-devel | Nov 4, 2024 | Apr 17, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-debuginfo-common-aarch64Upgrade kernel-headersUpgrade perf-debuginfoUpgrade kernel-tools-develUpgrade kernel-livepatch-6.1.84-99.169Upgrade python3-perfUpgrade kernel-toolsUpgrade kernel-modules-extra-commonUpgrade perfUpgrade kernel-develUpgrade bpftoolUpgrade kernel-libbpfUpgrade kernel-libbpf-develUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-modules-extraUpgrade kernel-tools-debuginfoUpgrade kernel-libbpf-staticUpgrade kernel-debuginfoUpgrade python3-perf-debuginfoUpgrade kernelUpgrade bpftool-debuginfo | Feb 17, 2025 | Apr 17, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | Apr 17, 2024 |
| Oracle_linux | — | Upgrade kernel | Oct 16, 2024 | Apr 17, 2024 |
| Redhat_linux | — | Upgrade kernel-rtUpgrade kernelNo solution exists | Dec 5, 2024 | Apr 17, 2024 |
| Rocky_linux | — | Upgrade kernel-rt-modulesUpgrade kernel-debug-coreUpgrade perfUpgrade kernel-rt-debug-modules-extraUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-uki-virtUpgrade kernel-rt-debugUpgrade kernel-zfcpdump-debuginfoUpgrade rvUpgrade kernel-debug-uki-virtUpgrade kernel-toolsUpgrade kernel-rt-develUpgrade kernel-tools-debuginfoUpgrade kernel-rt-coreUpgrade kernel-debugUpgrade python3-perf-debuginfoUpgrade kernel-develUpgrade bpftoolUpgrade perf-debuginfoUpgrade kernel-rt-debuginfoUpgrade kernel-rt-debug-modulesUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-rtUpgrade kernel-rt-kvmUpgrade kernel-coreUpgrade kernel-zfcpdumpUpgrade python3-perfUpgrade kernel-modules-extraUpgrade kernel-rt-debug-modules-coreUpgrade kernel-debug-develUpgrade kernel-zfcpdump-coreUpgrade kernel-debug-modules-coreUpgrade libperf-debuginfoUpgrade kernel-cross-headersUpgrade kernel-zfcpdump-modulesUpgrade kernel-debuginfoUpgrade kernel-rt-debug-debuginfoUpgrade kernel-modules-coreUpgrade kernel-debug-modulesUpgrade kernel-tools-libs-develUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-rt-debug-kvmUpgrade kernel-debug-debuginfoUpgrade kernel-rt-debug-develUpgrade kernel-zfcpdump-develUpgrade kernel-rt-modules-coreUpgrade kernel-modulesUpgrade bpftool-debuginfoUpgrade kernel-debug-devel-matchedUpgrade libperfUpgrade kernel-rt-debug-coreUpgrade kernel-rt-modules-extraUpgrade kernel-debug-modules-extraUpgrade rtlaUpgrade kernel-tools-libsUpgrade kernel-headersUpgrade kernelUpgrade kernel-devel-matched | Aug 22, 2024 | Apr 17, 2024 |
| Suse | — | Upgrade kernel-syms-azureUpgrade dtb-appleUpgrade kernel-devel-azureUpgrade dtb-rockchipUpgrade kernel-azure-livepatch-develUpgrade reiserfs-kmp-rtUpgrade kernel-obs-buildUpgrade kernel-azure-extraUpgrade dtb-socionextUpgrade kernel-obs-qaUpgrade kernel-kvmsmall-develUpgrade kernel-azure-vdsoUpgrade gfs2-kmp-rtUpgrade kernel-rt-vdsoUpgrade kernel-default-base-rebuildUpgrade kernel-azure-develUpgrade cluster-md-kmp-defaultUpgrade kernel-kvmsmall-vdsoUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-default-livepatchUpgrade ocfs2-kmp-64kbUpgrade reiserfs-kmp-defaultUpgrade kernel-default-livepatch-develUpgrade dtb-amdUpgrade dtb-alteraUpgrade ocfs2-kmp-azureUpgrade kernel-64kbUpgrade kernel-default-baseUpgrade kernel-debug-develUpgrade kernel-defaultUpgrade kernel-zfcpdumpUpgrade kernel-debugUpgrade cluster-md-kmp-rtUpgrade kernel-rt-develUpgrade kernel-default-vdsoUpgrade kernel-symsUpgrade dtb-lgUpgrade kernel-rt_debug-livepatch-develUpgrade ocfs2-kmp-defaultUpgrade dtb-xilinxUpgrade kselftests-kmp-64kbUpgrade reiserfs-kmp-azureUpgrade dtb-armUpgrade kernel-develUpgrade kernel-azure-optionalUpgrade kernel-rt-optionalUpgrade kernel-macrosUpgrade kernel-rt_debug-vdsoUpgrade ocfs2-kmp-rtUpgrade kernel-rt_debugUpgrade dtb-qcomUpgrade dtb-broadcomUpgrade dtb-amazonUpgrade kernel-kvmsmallUpgrade kernel-debug-livepatch-develUpgrade dtb-nvidiaUpgrade kernel-syms-rtUpgrade kernel-docsUpgrade dtb-amlogicUpgrade reiserfs-kmp-64kbUpgrade kselftests-kmp-defaultUpgrade kernel-sourceUpgrade kernel-rt-extraUpgrade dtb-apmUpgrade kernel-rt-livepatch-develUpgrade kernel-rtUpgrade dtb-marvellUpgrade dtb-freescaleUpgrade cluster-md-kmp-azureUpgrade kernel-rt_debug-develUpgrade kselftests-kmp-rtUpgrade kernel-default-extraUpgrade kernel-azureUpgrade kernel-debug-vdsoUpgrade kernel-docs-htmlUpgrade dlm-kmp-defaultUpgrade dlm-kmp-azureUpgrade kselftests-kmp-azureUpgrade kernel-source-vanillaUpgrade kernel-source-rt | Jun 24, 2024 | Apr 17, 2024 |
| Ubuntu | — | Upgrade linux-image-6.8.0-35-genericUpgrade linux-image-6.8.0-35-lowlatency-64kUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-1006-oemUpgrade linux-image-awsUpgrade linux-image-oem-24.04aUpgrade linux-image-oracleUpgrade linux-image-6.8.0-1006-oracle-64kUpgrade linux-image-6.8.0-1008-gcpUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-gcpUpgrade linux-image-ibm-classicUpgrade linux-image-kvmUpgrade linux-image-6.8.0-35-generic-64kUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1008-azure-fdeUpgrade linux-image-6.8.0-1006-oracleUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-1005-raspiUpgrade linux-image-gkeUpgrade linux-image-raspiUpgrade linux-image-6.8.0-1006-ibmUpgrade linux-image-6.8.0-35-lowlatencyUpgrade linux-image-6.8.0-1009-awsUpgrade linux-image-6.8.0-1004-gkeUpgrade linux-image-azureUpgrade linux-image-6.8.0-1008-azureUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-generic-64kUpgrade linux-image-ibmUpgrade linux-image-genericUpgrade linux-image-lowlatencyUpgrade linux-image-virtualUpgrade linux-image-lowlatency-64kUpgrade linux-image-generic-lpaeUpgrade linux-image-oem-24.04 | Jul 1, 2024 | Apr 17, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 14, 2025 | Apr 17, 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