[BUG] net: Bad page state in skb_pp_cow_data

From: Jiakai Xu
Date: Wed Dec 24 2025 - 21:06:43 EST


Hi all,

I have encountered a "Bad page state" bug while fuzzing the kernel.

The issue was initially found on a RISC-V branch. After analyzing the kernel logs,
I suspected the bug was architecture-independent. To verify this, I reproduced
it on the latest mainline x86 kernel (commit: ccd1cdca5cd433c8a5dff78b69a79b31d9b77ee1),
and it reproduced successfully.

The bug appears to be triggered when a Generic XDP program calls bpf_xdp_adjust_tail
to shrink a packet, causing a page_pool managed page to be incorrectly freed via the
standard page allocator.

I have uploaded the following materials to GitHub for reference:
- Kernel config files (x86)
- C reproducer
- Kernel logs for both x86 and RISC-V

Link: https://github.com/j1akai/temp/tree/main/20251225

Does anyone have suggestions for a fix? I would be very happy to help fix it and
test any patches.

Best regards, Jiakai