Re: [PATCH net-next] net: xdp: don't assume an Ethernet header in generic XDP
Alexander Lobakin <[email protected]>
| Newsgroups | org.kernel.vger.linux-kernel,org.kernel.vger.bpf,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
From: Jiayuan Chen <[email protected]> Date: Thu, 13 Aug 2026 19:32:24 +0800 > Kenneth Lee reported a bug [1]: > > skb_vlan_push got skb with skb->data not at mac header (offset 14) > WARNING: net/core/skbuff.c:6474 at skb_vlan_push+0x5ec/0x8a0 > ____bpf_skb_vlan_push net/core/filter.c:3239 [inline] > bpf_skb_vlan_push+0x216/0x8b0 net/core/filter.c:3229 > bpf_prog_run_data_pointers+0x17c/0x240 include/linux/filter.h:917 > tcf_bpf_act+0x31c/0x940 net/sched/act_bpf.c:50 > tcf_action_exec+0x2c1/0x720 net/sched/act_api.c:1147 > tcf_classify+0x6e4/0x1080 net/sched/cls_api.c:1860 > tc_run+0x31c/0x5d0 net/core/dev.c:4411 > sch_handle_ingress net/core/dev.c:4486 [inline] > __netif_receive_skb_core+0x141b/0x2ec0 net/core/dev.c:6054 > > bpf_prog_run_generic_xdp() just assumes xdp->data is an Ethernet header: Most XDP programs expect Ethernet header at the beginning of a frame. Unless you write a custom one which doesn't. But then you may face that XDP_TX, XDP_REDIRECT won't work properly -- cpumap Rx, each .ndo_xdp_xmit() implementation -- all expect Ethernet header at the beginning. Thanks, Olek