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 kernel-toolsUpgrade bpftoolUpgrade kernel-debuginfo-common-x86_64Upgrade kernelUpgrade kernel-livepatch-5.10.173-154.642Upgrade kernel-develUpgrade kernel-tools-develUpgrade perf-debuginfoUpgrade python-perfUpgrade kernel-livepatch-5.15.102-61.139Upgrade python-perf-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-headersUpgrade perfUpgrade kernel-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-tools-debuginfo | Dec 12, 2024 | May 21, 2024 |
| Amazon_linux_2023 | — | Upgrade perf-debuginfoUpgrade kernel-tools-develUpgrade python3-perfUpgrade kernel-headersUpgrade kernel-toolsUpgrade kernel-develUpgrade perfUpgrade kernel-debuginfo-common-aarch64Upgrade kernelUpgrade bpftoolUpgrade kernel-tools-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade python3-perf-debuginfoUpgrade kernel-libbpfUpgrade kernel-debuginfoUpgrade kernel-livepatch-6.1.12-17.42Upgrade bpftool-debuginfoUpgrade kernel-libbpf-develUpgrade kernel-libbpf-static | Feb 17, 2025 | May 21, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernel-toolsUpgrade kernel-abi-stablelistsUpgrade kernelUpgrade python3-perfUpgrade kernel-tools-libs | Oct 8, 2024 | May 21, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-abi-stablelistsUpgrade kernelUpgrade kernel-tools-libsUpgrade python3-perfUpgrade bpftoolUpgrade kernel-tools | Feb 11, 2025 | May 21, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade python3-perfUpgrade kernel-toolsUpgrade kernel-tools-libsUpgrade kernel | Oct 8, 2024 | May 21, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | May 21, 2024 |
| Suse | — | Upgrade dtb-socionextUpgrade dtb-hisiliconUpgrade kernel-rt-livepatch-develUpgrade kselftests-kmp-rtUpgrade reiserfs-kmp-rtUpgrade kernel-symsUpgrade kernel-azure-livepatch-develUpgrade kernel-zfcpdumpUpgrade kernel-debug-livepatch-develUpgrade kernel-rt_debug-vdsoUpgrade kernel-64kb-optionalUpgrade dtb-qcomUpgrade gfs2-kmp-64kbUpgrade dtb-apmUpgrade kernel-64kbUpgrade kernel-rt-develUpgrade kernel-default-extraUpgrade kernel-macrosUpgrade kernel-azure-develUpgrade kernel-syms-azureUpgrade ocfs2-kmp-rtUpgrade kernel-debug-develUpgrade kernel-64kb-livepatch-develUpgrade dtb-amlogicUpgrade dtb-armUpgrade kernel-debugUpgrade kernel-devel-azureUpgrade dlm-kmp-defaultUpgrade dtb-xilinxUpgrade kernel-docsUpgrade cluster-md-kmp-azureUpgrade dlm-kmp-azureUpgrade kernel-rtUpgrade cluster-md-kmp-defaultUpgrade kernel-devel-rtUpgrade reiserfs-kmp-azureUpgrade gfs2-kmp-rtUpgrade kselftests-kmp-defaultUpgrade kernel-64kb-develUpgrade dtb-mediatekUpgrade kernel-azure-vdsoUpgrade kernel-kvmsmall-develUpgrade kernel-obs-qaUpgrade kernel-syms-rtUpgrade kernel-kvmsmallUpgrade dtb-amdUpgrade dtb-allwinnerUpgrade kernel-default-vdsoUpgrade kernel-default-baseUpgrade kernel-azure-extraUpgrade dtb-appleUpgrade dtb-alteraUpgrade kernel-azureUpgrade kernel-rt_debug-develUpgrade kernel-rt_debugUpgrade kernel-default-develUpgrade kernel-source-azureUpgrade cluster-md-kmp-rtUpgrade dtb-caviumUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-develUpgrade kernel-rt-extraUpgrade kselftests-kmp-azureUpgrade kernel-rt_debug-livepatch-develUpgrade cluster-md-kmp-64kbUpgrade kernel-default-livepatch-develUpgrade dtb-marvellUpgrade reiserfs-kmp-defaultUpgrade ocfs2-kmp-azureUpgrade kernel-64kb-extraUpgrade kernel-rt-optionalUpgrade dtb-sprdUpgrade dtb-amazonUpgrade kernel-defaultUpgrade kernel-debug-vdsoUpgrade kselftests-kmp-64kbUpgrade dtb-renesasUpgrade kernel-default-livepatchUpgrade dlm-kmp-rtUpgrade dtb-lgUpgrade kernel-kvmsmall-vdsoUpgrade dtb-nvidiaUpgrade kernel-rt-vdsoUpgrade kernel-obs-buildUpgrade dlm-kmp-64kbUpgrade kernel-azure-optionalUpgrade ocfs2-kmp-defaultUpgrade ocfs2-kmp-64kbUpgrade gfs2-kmp-azureUpgrade dtb-exynosUpgrade dtb-broadcomUpgrade kernel-source-rtUpgrade gfs2-kmp-defaultUpgrade kernel-default-base-rebuildUpgrade dtb-rockchipUpgrade reiserfs-kmp-64kbUpgrade kernel-sourceUpgrade kernel-rt-livepatchUpgrade kernel-docs-htmlUpgrade kernel-default-optionalUpgrade kernel-source-vanillaUpgrade dtb-freescale | Jun 13, 2024 | May 21, 2024 |
| Ubuntu | — | Upgrade linux-gkeUpgrade linux-intel-iot-realtimeUpgrade linux-awsUpgrade linux-lowlatencyUpgrade linux-azure-fde-5.15Upgrade linuxUpgrade linux-gkeopUpgrade linux-kvmUpgrade linux-azure-fdeUpgrade linux-ibmUpgrade linux-raspiUpgrade linux-hwe-5.15Upgrade linux-gcp-5.15Upgrade linux-lowlatency-hwe-5.15Upgrade linux-oracleUpgrade linux-oracle-5.15Upgrade linux-realtimeUpgrade linux-azureUpgrade linux-bluefieldUpgrade linux-riscv-5.15Upgrade linux-gkeop-5.15Upgrade linux-aws-5.15Upgrade linux-gcpUpgrade linux-nvidiaUpgrade linux-intel-iotgUpgrade linux-intel-iotg-5.15Upgrade linux-azure-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