In the Linux kernel, the following vulnerability has been resolved:
net: esp: fix bad handling of pages from page_pool
When the skb is reorganized during esp_output (!esp->inline), the pages coming from the original skb fragments are supposed to be released back to the system through put_page. But if the skb fragment pages are originating from a page_pool, calling put_page on them will trigger a page_pool leak which will eventually result in a crash.
This leak can be easily observed when using CONFIG_DEBUG_VM and doing ipsec + gre (non offloaded) forwarding:
BUG: Bad page state in process ksoftirqd/16 pfn:1451b6 page:00000000de2b8d32 refcount:0 mapcount:0 mapping:0000000000000000 index:0x1451b6000 pfn:0x1451b6 flags: 0x200000000000000(node=0|zone=2) page_type: 0xffffffff() raw: 0200000000000000 dead000000000040 ffff88810d23c000 0000000000000000 raw: 00000001451b6000 0000000000000001 00000000ffffffff 0000000000000000 page dumped because: page_pool leak Modules linked in: ip_gre gre mlx5_ib mlx5_core xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink iptable_nat nf_nat xt_addrtype br_netfilter rpcrdma rdma_ucm ib_iser libiscsi scsi_transport_iscsi ib_umad rdma_cm ib_ipoib iw_cm ib_cm ib_uverbs ib_core overlay zram zsmalloc fuse [last unloaded: mlx5_core] CPU: 16 PID: 96 Comm: ksoftirqd/16 Not tainted 6.8.0-rc4+ #22 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014 Call Trace: <TASK> dump_stack_lvl+0x36/0x50 bad_page+0x70/0xf0 free_unref_page_prepare+0x27a/0x460 free_unref_page+0x38/0x120 esp_ssg_unref.isra.0+0x15f/0x200 esp_output_tail+0x66d/0x780 esp_xmit+0x2c5/0x360 validate_xmit_xfrm+0x313/0x370 ? validate_xmit_skb+0x1d/0x330 validate_xmit_skb_list+0x4c/0x70 sch_direct_xmit+0x23e/0x350 __dev_queue_xmit+0x337/0xba0 ? nf_hook_slow+0x3f/0xd0 ip_finish_output2+0x25e/0x580 iptunnel_xmit+0x19b/0x240 ip_tunnel_xmit+0x5fb/0xb60 ipgre_xmit+0x14d/0x280 [ip_gre] dev_hard_start_xmit+0xc3/0x1c0 __dev_queue_xmit+0x208/0xba0 ? nf_hook_slow+0x3f/0xd0 ip_finish_output2+0x1ca/0x580 ip_sublist_rcv_finish+0x32/0x40 ip_sublist_rcv+0x1b2/0x1f0 ? ip_rcv_finish_core.constprop.0+0x460/0x460 ip_list_rcv+0x103/0x130 __netif_receive_skb_list_core+0x181/0x1e0 netif_receive_skb_list_internal+0x1b3/0x2c0 napi_gro_receive+0xc8/0x200 gro_cell_poll+0x52/0x90 __napi_poll+0x25/0x1a0 net_rx_action+0x28e/0x300 __do_softirq+0xc3/0x276 ? sort_range+0x20/0x20 run_ksoftirqd+0x1e/0x30 smpboot_thread_fn+0xa6/0x130 kthread+0xcd/0x100 ? kthread_complete_and_exit+0x20/0x20 ret_from_fork+0x31/0x50 ? kthread_complete_and_exit+0x20/0x20 ret_from_fork_asm+0x11/0x20 </TASK>
The suggested fix is to introduce a new wrapper (skb_page_unref) that covers page refcounting for page_pool pages as well.
CVSS Details
- CVSS 3.1 Base Score: 9.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | No solution existsUpgrade linux | May 15, 2025 | May 1, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-toolsUpgrade kernel-tools-libsUpgrade kernelUpgrade bpftoolUpgrade kernel-abi-stablelistsUpgrade python3-perf | Oct 8, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-toolsUpgrade kernelUpgrade python3-perfUpgrade kernel-abi-stablelistsUpgrade bpftoolUpgrade kernel-tools-libs | Oct 9, 2024 | May 1, 2024 |
| Redhat_linux | — | Upgrade kernelNo solution existsUpgrade kernel-rt | Dec 5, 2024 | May 1, 2024 |
| Suse | — | Upgrade kernel-azure-develUpgrade dtb-marvellUpgrade kernel-rt-livepatch-develUpgrade kernel-rt-develUpgrade kernel-default-extraUpgrade kernel-rt_debug-vdsoUpgrade kernel-devel-rtUpgrade dtb-amlogicUpgrade kernel-64kb-optionalUpgrade kernel-default-develUpgrade kernel-obs-qaUpgrade dtb-lgUpgrade dtb-apmUpgrade kernel-source-azureUpgrade kernel-kvmsmallUpgrade kernel-rtUpgrade kernel-docs-htmlUpgrade cluster-md-kmp-defaultUpgrade dlm-kmp-64kbUpgrade gfs2-kmp-64kbUpgrade kernel-devel-azureUpgrade dtb-appleUpgrade kernel-kvmsmall-develUpgrade kernel-syms-azureUpgrade ocfs2-kmp-64kbUpgrade dtb-qcomUpgrade dtb-amdUpgrade kernel-zfcpdumpUpgrade dtb-alteraUpgrade kernel-azure-extraUpgrade kernel-64kb-develUpgrade kernel-macrosUpgrade kernel-rt-livepatchUpgrade cluster-md-kmp-azureUpgrade dtb-exynosUpgrade dtb-hisiliconUpgrade dtb-broadcomUpgrade kernel-symsUpgrade kernel-64kbUpgrade kernel-debugUpgrade kernel-azure-optionalUpgrade dtb-xilinxUpgrade kernel-default-vdsoUpgrade kernel-sourceUpgrade dtb-amazonUpgrade kernel-syms-rtUpgrade dtb-freescaleUpgrade gfs2-kmp-rtUpgrade dtb-mediatekUpgrade kselftests-kmp-64kbUpgrade ocfs2-kmp-rtUpgrade kernel-debug-develUpgrade kernel-azure-vdsoUpgrade kernel-default-livepatchUpgrade dlm-kmp-rtUpgrade reiserfs-kmp-64kbUpgrade kernel-source-vanillaUpgrade dtb-sprdUpgrade kernel-default-optionalUpgrade kernel-defaultUpgrade kernel-rt-vdsoUpgrade dtb-allwinnerUpgrade dtb-socionextUpgrade reiserfs-kmp-rtUpgrade kernel-default-base-rebuildUpgrade kernel-rt-optionalUpgrade reiserfs-kmp-defaultUpgrade dtb-renesasUpgrade ocfs2-kmp-defaultUpgrade kselftests-kmp-defaultUpgrade kernel-azureUpgrade dtb-armUpgrade dlm-kmp-azureUpgrade cluster-md-kmp-64kbUpgrade ocfs2-kmp-azureUpgrade reiserfs-kmp-azureUpgrade kernel-rt-extraUpgrade kernel-docsUpgrade kernel-default-livepatch-develUpgrade dtb-caviumUpgrade kernel-source-rtUpgrade cluster-md-kmp-rtUpgrade dtb-rockchipUpgrade kselftests-kmp-azureUpgrade dlm-kmp-defaultUpgrade kernel-develUpgrade kernel-64kb-extraUpgrade gfs2-kmp-defaultUpgrade dtb-nvidiaUpgrade gfs2-kmp-azureUpgrade kernel-obs-buildUpgrade kselftests-kmp-rtUpgrade kernel-kvmsmall-vdsoUpgrade kernel-rt_debug-develUpgrade kernel-rt_debugUpgrade kernel-default-baseUpgrade kernel-debug-vdso | Dec 5, 2025 | Dec 13, 2024 |
| Ubuntu | — | Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1008-azureUpgrade linux-image-genericUpgrade linux-image-ibmUpgrade linux-image-6.8.0-1006-oracleUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-1006-oracle-64kUpgrade linux-image-ibm-classicUpgrade linux-image-gcpUpgrade linux-image-azure-fdeUpgrade linux-image-oem-24.04aUpgrade linux-image-generic-lpaeUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-kvmUpgrade linux-image-lowlatency-64kUpgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-1006-oemUpgrade linux-image-6.8.0-1009-awsUpgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1004-gkeUpgrade linux-image-6.8.0-1005-raspiUpgrade linux-image-virtualUpgrade linux-image-gkeUpgrade linux-image-oracleUpgrade linux-image-6.8.0-35-lowlatency-64kUpgrade linux-image-6.8.0-1006-ibmUpgrade linux-image-oem-24.04Upgrade linux-image-6.8.0-35-genericUpgrade linux-image-6.8.0-1008-azure-fdeUpgrade linux-image-6.8.0-1008-gcpUpgrade linux-image-raspiUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-35-generic-64kUpgrade linux-image-azureUpgrade linux-image-6.8.0-35-lowlatencyUpgrade linux-image-aws | Jul 1, 2024 | May 1, 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