On 03/13/2018 04:09 PM, Alexei Starovoitov wrote:
we have bpf_skb_proto_6_to_4() that was used by cilium for long time.
It's not clear why it's not crashing there, but we cannot just
reject changing proto in bpf programs now.
We have to fix whatever needs to be fixed in skb_segment
(if bug is there) or fix whatever necessary on mlx5 side.
In bpf helper we mark it as SKB_GSO_DODGY just like packets coming
through virtio would do, so if skb_segment() needs to do something
special with skb the SKB_GSO_DODGY flag is already there.
'Fixing' skb_segment(), I did that a long time ago and Herbert Xu was
not happy with the fix and provided something else.
GSO_DODGY has nothing to do with the problem really.
Changing gso_size is breaking GRO since it ends up changing the number
of segments on the wire. TCP is not going to be happy, so you'll also
have to fix TCP eventually.