From: Fabian Frederick Date: Fri, 25 Sep 2020 13:16:02 +0000 (+0200) Subject: vxlan: don't collect metadata if remote checksum is wrong X-Git-Tag: v5.10-rc1~107^2~144^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2ae2904b5bac4a554e0734cf494bb6d6fdfd4cd2;p=thirdparty%2Flinux.git vxlan: don't collect metadata if remote checksum is wrong call vxlan_remcsum() before md filling in vxlan_rcv() Signed-off-by: Fabian Frederick Signed-off-by: David S. Miller --- diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index b9fefe27e3e89..47c762f7f5b11 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -1875,6 +1875,10 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb) !net_eq(vxlan->net, dev_net(vxlan->dev)))) goto drop; + if (vs->flags & VXLAN_F_REMCSUM_RX) + if (!vxlan_remcsum(&unparsed, skb, vs->flags)) + goto drop; + if (vxlan_collect_metadata(vs)) { struct metadata_dst *tun_dst; @@ -1891,9 +1895,6 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb) memset(md, 0, sizeof(*md)); } - if (vs->flags & VXLAN_F_REMCSUM_RX) - if (!vxlan_remcsum(&unparsed, skb, vs->flags)) - goto drop; if (vs->flags & VXLAN_F_GBP) vxlan_parse_gbp_hdr(&unparsed, skb, vs->flags, md); /* Note that GBP and GPE can never be active together. This is