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