Eric Dumazet <[email protected]> writes:

> eth_type_trans() assumes ETH_HLEN bytes are present in skb->head.
> NIC drivers always provide this, and they should keep using the fast
> version.
>
> Devices looping skbs from their transmit path back to their receive
> path get skbs built by the stack instead. Their link-layer header
> might have been popped by tc actions (act_vlan pop_eth, act_ife decode)
> or OVS actions (pop_eth + pop_mpls / pop_nsh), leaving fewer than
> ETH_HLEN bytes in the linear part. eth_type_trans() then hits
> the BUG() in __skb_pull().
>
> Add eth_type_trans_careful(), which first pulls the Ethernet header,
> and returns a drop reason on failure, so that the few devices exposed
> to this can drop such packets.
>
> Signed-off-by: Eric Dumazet <[email protected]>
> ---

Reviewed-by: Aaron Conole <[email protected]>

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to