From: Loktionov, Aleksandr <[email protected]> Date: Fri, 20 Mar 2026 06:05:18 +0100
> From: Katarzyna Wieczerzycka <[email protected]> > > By default skb->mac_header is not set, so reset prevents access to an > invalid pointer. > > Call skb_reset_mac_header() before accessing the mac header from skb. > > Signed-off-by: Katarzyna Wieczerzycka <[email protected]> > Signed-off-by: Aleksandr Loktionov <[email protected]> > --- > drivers/net/ethernet/intel/ice/ice_txrx.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c > b/drivers/net/ethernet/intel/ice/ice_txrx.c > index a2cd4cf..374b17f 100644 > --- a/drivers/net/ethernet/intel/ice/ice_txrx.c > +++ b/drivers/net/ethernet/intel/ice/ice_txrx.c > @@ -2211,6 +2211,8 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct > ice_tx_ring *tx_ring) > goto out_drop; > > /* allow CONTROL frames egress from main VSI if FW LLDP disabled */ > + if (likely(!skb_mac_header_was_set(skb))) > + skb_reset_mac_header(skb); > eth = (struct ethhdr *)skb_mac_header(skb); > > if ((ice_is_switchdev_running(vsi->back) || Did you read my internal review? I've never faced a situation when the kernel queues an skb to .ndo_start_xmit() without the header pointers set up correctly. I need a good repro to agree this is needed. `likely()` also doesn't fit here (you basically slow down almost 100% of the traffic). Thanks, Olek
