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 perfUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-rtUpgrade kernel-64k-debugUpgrade kernel-64k-debug-modules-coreUpgrade kernel-debug-uki-virtUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-rt-debug-modules-coreUpgrade kernel-rt-modules-coreUpgrade kernel-rt-develUpgrade kernel-rt-modulesUpgrade kernel-64k-modules-extraUpgrade kernel-zfcpdump-coreUpgrade kernel-toolsUpgrade kernel-64k-debug-develUpgrade kernel-tools-libsUpgrade kernel-tools-libs-develUpgrade python3-perfUpgrade rvUpgrade kernel-debug-modules-coreUpgrade kernel-docUpgrade kernel-rt-modules-extraUpgrade kernel-develUpgrade kernel-rt-debug-coreUpgrade bpftoolUpgrade kernel-debug-modulesUpgrade kernel-64k-debug-coreUpgrade kernel-rt-debugUpgrade kernel-64k-debug-modulesUpgrade kernel-zfcpdump-modulesUpgrade kernel-uki-virtUpgrade kernel-64k-develUpgrade kernel-64k-coreUpgrade kernel-devel-matchedUpgrade kernel-64k-devel-matchedUpgrade kernel-debugUpgrade kernel-debug-modules-extraUpgrade kernel-rt-debug-modules-extraUpgrade kernel-64k-modulesUpgrade kernel-zfcpdumpUpgrade rtlaUpgrade kernel-headersUpgrade kernel-modules-extraUpgrade kernel-rt-debug-develUpgrade kernel-cross-headersUpgrade kernel-abi-stablelistsUpgrade kernelUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-debug-coreUpgrade kernel-64kUpgrade kernel-debug-devel-matchedUpgrade kernel-coreUpgrade kernel-64k-modules-coreUpgrade kernel-modules-coreUpgrade kernel-modulesUpgrade kernel-zfcpdump-modules-coreUpgrade libperfUpgrade kernel-rt-coreUpgrade kernel-debug-develUpgrade kernel-64k-debug-modules-extraUpgrade kernel-rt-debug-modulesUpgrade kernel-zfcpdump-devel | Nov 4, 2024 | Apr 17, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-libbpf-staticUpgrade kernel-tools-debuginfoUpgrade kernel-debuginfoUpgrade kernel-libbpfUpgrade kernel-debuginfo-common-x86_64Upgrade python3-perf-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-develUpgrade bpftoolUpgrade kernelUpgrade kernel-modules-extraUpgrade kernel-libbpf-develUpgrade python3-perfUpgrade kernel-debuginfo-common-aarch64Upgrade perfUpgrade kernel-headersUpgrade perf-debuginfoUpgrade kernel-livepatch-6.1.84-99.169Upgrade kernel-tools-develUpgrade kernel-modules-extra-commonUpgrade kernel-tools | 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 | — | No solution existsUpgrade kernelUpgrade kernel-rt | Dec 5, 2024 | Apr 17, 2024 |
| Rocky_linux | — | Upgrade bpftool-debuginfoUpgrade libperfUpgrade kernel-zfcpdump-develUpgrade kernel-rt-modules-coreUpgrade kernel-headersUpgrade kernel-debug-modules-coreUpgrade kernelUpgrade kernel-rt-debug-coreUpgrade rtlaUpgrade kernel-rt-debug-develUpgrade kernel-modulesUpgrade kernel-rt-modules-extraUpgrade kernel-tools-libsUpgrade kernel-debug-modules-extraUpgrade kernel-cross-headersUpgrade kernel-debug-devel-matchedUpgrade kernel-rt-debug-kvmUpgrade kernel-devel-matchedUpgrade kernel-zfcpdump-coreUpgrade kernel-modules-coreUpgrade kernel-rt-debug-debuginfoUpgrade kernel-debuginfoUpgrade kernel-debug-develUpgrade kernel-debug-modulesUpgrade kernel-zfcpdump-modulesUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-debug-debuginfoUpgrade kernel-tools-libs-develUpgrade libperf-debuginfoUpgrade kernel-zfcpdump-debuginfoUpgrade kernel-develUpgrade kernel-rt-debuginfoUpgrade perf-debuginfoUpgrade kernel-modules-extraUpgrade kernel-zfcpdumpUpgrade kernel-rt-kvmUpgrade kernel-coreUpgrade kernel-toolsUpgrade rvUpgrade kernel-rt-develUpgrade kernel-rt-debugUpgrade kernel-tools-debuginfoUpgrade kernel-rt-modulesUpgrade kernel-rt-debug-modules-coreUpgrade perfUpgrade kernel-rt-debug-modules-extraUpgrade kernel-uki-virtUpgrade kernel-debug-coreUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-debug-uki-virtUpgrade kernel-rt-coreUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-debugUpgrade bpftoolUpgrade python3-perf-debuginfoUpgrade kernel-rt-debug-modulesUpgrade kernel-rtUpgrade python3-perf | Aug 22, 2024 | Apr 17, 2024 |
| Suse | — | Upgrade kernel-debug-livepatch-develUpgrade dtb-marvellUpgrade kernel-obs-buildUpgrade reiserfs-kmp-rtUpgrade kernel-obs-qaUpgrade dtb-socionextUpgrade kernel-kvmsmall-develUpgrade ocfs2-kmp-rtUpgrade kselftests-kmp-defaultUpgrade kernel-syms-rtUpgrade kernel-sourceUpgrade kernel-docsUpgrade dtb-amlogicUpgrade reiserfs-kmp-64kbUpgrade dtb-broadcomUpgrade kernel-kvmsmallUpgrade kernel-devel-azureUpgrade dtb-qcomUpgrade dtb-rockchipUpgrade dtb-amazonUpgrade kernel-rt_debugUpgrade cluster-md-kmp-defaultUpgrade kernel-azure-develUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-azure-extraUpgrade kernel-source-rtUpgrade ocfs2-kmp-64kbUpgrade kernel-rt_debug-vdsoUpgrade kernel-azureUpgrade kernel-docs-htmlUpgrade kernel-source-vanillaUpgrade kselftests-kmp-azureUpgrade kernel-default-extraUpgrade kernel-kvmsmall-vdsoUpgrade dlm-kmp-defaultUpgrade dlm-kmp-azureUpgrade kselftests-kmp-rtUpgrade kernel-rt-vdsoUpgrade gfs2-kmp-rtUpgrade kernel-azure-vdsoUpgrade kernel-macrosUpgrade kernel-zfcpdumpUpgrade cluster-md-kmp-64kbUpgrade dtb-xilinxUpgrade kernel-default-optionalUpgrade kernel-devel-rtUpgrade kernel-symsUpgrade kernel-develUpgrade dlm-kmp-64kbUpgrade dtb-alteraUpgrade kernel-default-livepatch-develUpgrade kernel-64kbUpgrade cluster-md-kmp-rtUpgrade kernel-debug-develUpgrade kernel-debugUpgrade ocfs2-kmp-defaultUpgrade dtb-caviumUpgrade dtb-allwinnerUpgrade kernel-default-vdsoUpgrade kernel-source-azureUpgrade dtb-renesasUpgrade reiserfs-kmp-defaultUpgrade ocfs2-kmp-azureUpgrade dtb-hisiliconUpgrade kernel-64kb-develUpgrade kernel-default-develUpgrade dtb-amdUpgrade kernel-64kb-optionalUpgrade dtb-exynosUpgrade dtb-armUpgrade dtb-lgUpgrade reiserfs-kmp-azureUpgrade kselftests-kmp-64kbUpgrade kernel-azure-optionalUpgrade kernel-64kb-livepatch-develUpgrade kernel-64kb-extraUpgrade dlm-kmp-rtUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-rt-develUpgrade kernel-default-baseUpgrade kernel-defaultUpgrade gfs2-kmp-azureUpgrade gfs2-kmp-defaultUpgrade gfs2-kmp-64kbUpgrade dtb-mediatekUpgrade dtb-sprd | Jun 24, 2024 | Apr 17, 2024 |
| Ubuntu | — | Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-lowlatencyUpgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1006-ibmUpgrade linux-image-azureUpgrade linux-image-generic-64kUpgrade linux-image-oem-24.04Upgrade linux-image-6.8.0-1008-azureUpgrade linux-image-genericUpgrade linux-image-6.8.0-1005-raspiUpgrade linux-image-gkeUpgrade linux-image-ibmUpgrade linux-image-lowlatency-64kUpgrade linux-image-virtualUpgrade linux-image-6.8.0-35-lowlatencyUpgrade linux-image-6.8.0-1004-gkeUpgrade linux-image-raspiUpgrade linux-image-6.8.0-1009-awsUpgrade linux-image-6.8.0-35-lowlatency-64kUpgrade linux-image-kvmUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1006-oracleUpgrade linux-image-azure-fdeUpgrade linux-image-oracleUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-1008-azure-fdeUpgrade linux-image-6.8.0-1008-gcpUpgrade linux-image-awsUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1006-oemUpgrade linux-image-gcpUpgrade linux-image-oem-24.04aUpgrade linux-image-6.8.0-35-generic-64kUpgrade linux-image-6.8.0-35-genericUpgrade linux-image-6.8.0-1006-oracle-64kUpgrade linux-image-ibm-lts-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