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