In the Linux kernel, the following vulnerability has been resolved:
Fix page corruption caused by racy check in __free_pages
When we upgraded our kernel, we started seeing some page corruption like the following consistently:
BUG: Bad page state in process ganesha.nfsd pfn:1304ca page:0000000022261c55 refcount:0 mapcount:-128 mapping:0000000000000000 index:0x0 pfn:0x1304ca flags: 0x17ffffc0000000() raw: 0017ffffc0000000 ffff8a513ffd4c98 ffffeee24b35ec08 0000000000000000 raw: 0000000000000000 0000000000000001 00000000ffffff7f 0000000000000000 page dumped because: nonzero mapcount CPU: 0 PID: 15567 Comm: ganesha.nfsd Kdump: loaded Tainted: P B O 5.10.158-1.nutanix.20221209.el7.x86_64 #1 Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/05/2016 Call Trace: dump_stack+0x74/0x96 bad_page.cold+0x63/0x94 check_new_page_bad+0x6d/0x80 rmqueue+0x46e/0x970 get_page_from_freelist+0xcb/0x3f0 ? _cond_resched+0x19/0x40 __alloc_pages_nodemask+0x164/0x300 alloc_pages_current+0x87/0xf0 skb_page_frag_refill+0x84/0x110 ...
Sometimes, it would also show up as corruption in the free list pointer and cause crashes.
After bisecting the issue, we found the issue started from commit e320d3012d25 ("mm/page_alloc.c: fix freeing non-compound pages"):
if (put_page_testzero(page)) free_the_page(page, order); else if (!PageHead(page)) while (order-- > 0) free_the_page(page + (1 << order), order);
So the problem is the check PageHead is racy because at this point we already dropped our reference to the page. So even if we came in with compound page, the page can already be freed and PageHead can return false and we will end up freeing all the tail pages causing double free.
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 |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade python-perfUpgrade perfUpgrade kernel-tools-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-debuginfoUpgrade python-perf-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-livepatch-5.15.102-61.139Upgrade kernel-headersUpgrade perf-debuginfoUpgrade kernelUpgrade kernel-develUpgrade kernel-livepatch-5.10.173-154.642Upgrade kernel-tools-develUpgrade kernel-toolsUpgrade kernel-debuginfo-common-x86_64Upgrade bpftool | Dec 12, 2024 | May 21, 2024 |
| Amazon_linux_2023 | — | Upgrade kernelUpgrade kernel-tools-debuginfoUpgrade bpftoolUpgrade python3-perf-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-libbpf-develUpgrade kernel-debuginfoUpgrade kernel-livepatch-6.1.12-17.42Upgrade kernel-libbpf-staticUpgrade bpftool-debuginfoUpgrade kernel-libbpfUpgrade kernel-develUpgrade kernel-tools-develUpgrade kernel-debuginfo-common-aarch64Upgrade perfUpgrade perf-debuginfoUpgrade kernel-headersUpgrade python3-perfUpgrade kernel-tools | Feb 17, 2025 | May 21, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernel-abi-stablelistsUpgrade kernelUpgrade kernel-toolsUpgrade python3-perfUpgrade kernel-tools-libs | Oct 8, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernelUpgrade kernel-abi-stablelistsUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade python3-perfUpgrade bpftool | Feb 11, 2025 | May 21, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade kernelUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade python3-perf | Oct 8, 2024 | May 21, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | May 21, 2024 |
| Suse | — | Upgrade kernel-kvmsmallUpgrade kernel-macrosUpgrade dtb-amdUpgrade dlm-kmp-azureUpgrade dtb-hisiliconUpgrade kernel-rtUpgrade kselftests-kmp-rtUpgrade reiserfs-kmp-azureUpgrade cluster-md-kmp-azureUpgrade dtb-xilinxUpgrade kernel-rt-livepatch-develUpgrade kernel-obs-qaUpgrade kernel-azure-vdsoUpgrade kernel-devel-rtUpgrade kernel-kvmsmall-develUpgrade kernel-64kb-livepatch-develUpgrade kernel-devel-azureUpgrade kselftests-kmp-defaultUpgrade reiserfs-kmp-rtUpgrade gfs2-kmp-64kbUpgrade dtb-qcomUpgrade kernel-zfcpdumpUpgrade kernel-azure-livepatch-develUpgrade dlm-kmp-defaultUpgrade kernel-64kb-optionalUpgrade kernel-symsUpgrade kernel-debug-livepatch-develUpgrade cluster-md-kmp-defaultUpgrade dtb-armUpgrade ocfs2-kmp-rtUpgrade dtb-amlogicUpgrade kernel-debug-develUpgrade kernel-debugUpgrade kernel-syms-rtUpgrade dtb-mediatekUpgrade kernel-default-extraUpgrade kernel-64kbUpgrade dtb-socionextUpgrade kernel-rt-develUpgrade dtb-apmUpgrade kernel-rt_debug-vdsoUpgrade kernel-docsUpgrade gfs2-kmp-rtUpgrade kernel-64kb-develUpgrade kernel-syms-azureUpgrade kernel-azure-develUpgrade cluster-md-kmp-64kbUpgrade kselftests-kmp-azureUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-rt-extraUpgrade kernel-develUpgrade kernel-default-vdsoUpgrade kernel-default-baseUpgrade kernel-azure-extraUpgrade dtb-appleUpgrade dtb-alteraUpgrade dlm-kmp-64kbUpgrade kernel-rt-livepatchUpgrade kernel-rt-vdsoUpgrade kernel-kvmsmall-vdsoUpgrade dtb-lgUpgrade dtb-nvidiaUpgrade kernel-obs-buildUpgrade dlm-kmp-rtUpgrade kernel-docs-htmlUpgrade ocfs2-kmp-azureUpgrade kernel-default-livepatch-develUpgrade dtb-renesasUpgrade dtb-marvellUpgrade dtb-freescaleUpgrade kernel-default-develUpgrade kernel-azureUpgrade dtb-allwinnerUpgrade kernel-rt_debug-develUpgrade kernel-rt_debugUpgrade reiserfs-kmp-defaultUpgrade dtb-sprdUpgrade kernel-rt-optionalUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-defaultUpgrade kernel-debug-vdsoUpgrade kernel-64kb-extraUpgrade dtb-caviumUpgrade dtb-amazonUpgrade cluster-md-kmp-rtUpgrade kselftests-kmp-64kbUpgrade kernel-source-azureUpgrade ocfs2-kmp-defaultUpgrade dtb-rockchipUpgrade kernel-sourceUpgrade kernel-azure-optionalUpgrade kernel-default-base-rebuildUpgrade reiserfs-kmp-64kbUpgrade kernel-default-optionalUpgrade gfs2-kmp-azureUpgrade ocfs2-kmp-64kbUpgrade kernel-default-livepatchUpgrade gfs2-kmp-defaultUpgrade dtb-broadcomUpgrade kernel-source-vanillaUpgrade kernel-source-rtUpgrade dtb-exynos | Jun 13, 2024 | May 21, 2024 |
| Ubuntu | — | Upgrade linux-gkeopUpgrade linux-intel-iot-realtimeUpgrade linux-gkeUpgrade linux-azure-fde-5.15Upgrade linux-awsUpgrade linuxUpgrade linux-lowlatencyUpgrade linux-intel-iotgUpgrade linux-ibmUpgrade linux-azureUpgrade linux-gcpUpgrade linux-azure-fdeUpgrade linux-lowlatency-hwe-5.15Upgrade linux-aws-5.15Upgrade linux-gcp-5.15Upgrade linux-riscv-5.15Upgrade linux-kvmUpgrade linux-realtimeUpgrade linux-hwe-5.15Upgrade linux-raspiUpgrade linux-oracle-5.15Upgrade linux-bluefieldUpgrade linux-oracleUpgrade linux-azure-5.15Upgrade linux-nvidiaUpgrade linux-gkeop-5.15Upgrade linux-intel-iotg-5.15 | Nov 19, 2024 | May 21, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | May 21, 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