From: Stephen Hemminger <step...@networkplumber.org>
Date: Thu, 23 May 2019 10:54:29 -0700

> @@ -4858,6 +4841,17 @@ static int __netif_receive_skb_core(struct sk_buff 
> *skb, bool pfmemalloc,
>  
>       __this_cpu_inc(softnet_data.processed);
>  
> +     if (static_branch_unlikely(&generic_xdp_needed_key)) {
> +             int ret2;
> +
> +             preempt_disable();
> +             ret2 = do_xdp_generic(rcu_dereference(skb->dev->xdp_prog), skb);
> +             preempt_enable();
> +
> +             if (ret2 != XDP_PASS)
> +                     return NET_RX_DROP;
> +     }

This function just did a skb_reset_mac_len().

do_xdp_generic() can modify skb->mac_header.

This means we have to redo the skb_reset_mac_len() to handle the
potentially changed value.

Reply via email to