page_pool: keep frag_offset aligned for odd-sized requests
Two Fedora 44 reports of "Oops: Split lock detected" in skb_clone() on 7.1.8 (rhbz#2521546 kdump, rhbz#2521847 inline oops), plus two more Fedora 44 reporters on the upstream thread. Same instruction in every dump: lock incl on skb_shinfo(skb)->dataref with skb->head misaligned (RDX low bits 0x1f in both), because page_pool_alloc_frag_netmem() aligns fragment sizes to dma_get_cache_alignment(), which is 1 on x86; one odd-sized request from skb_pp_cow_data() (generic XDP on lo -- NetBird/tailscale -- or veth under Podman) leaves the pool's frag_offset odd for every buffer carved out after it. A kernel-mode #AC is fatal on Intel with split-lock detection; AMD just runs the unaligned atomic, so the reports are Intel-only.
Upstream fix is in net.git as dc0df5a0c62c, Acked-by the page_pool maintainer, Reviewed-by Eric Dumazet, Cc: stable, Fixes: 53e0961d (2021). Clean cherry-pick onto fedora-7.1, one hunk in net/core/page_pool.c; compile-tested (net/core/page_pool.o). It reaches 7.1.y through stable once the net PR hits Linus' tree and Greg picks it, typically two to three weeks; this shortens the wait for two urgent-rated Fedora 44 bugs. os-build gets it on the next rebase.
Workaround for affected users meanwhile: split_lock_detect=off.
bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2521546 bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2521847 upstream: https://git.kernel.org/netdev/net/c/dc0df5a0c62c
Signed-off-by: Junjie Cao junjie.cao@intel.com