For VXLAN-GPE, the interface is ARPHRD_NONE, thus we need to reset
mac_header after pulling the outer header.

Fixes: e1e5314de08b ("vxlan: implement GPE")
Signed-off-by: Jiri Benc <jb...@redhat.com>
---
 drivers/net/vxlan.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 2f29d20aa08f..e030a804b772 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -1338,6 +1338,8 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
        if (__iptunnel_pull_header(skb, VXLAN_HLEN, protocol, raw_proto,
                                   !net_eq(vxlan->net, dev_net(vxlan->dev))))
                        goto drop;
+       if (raw_proto)
+               skb_reset_mac_header(skb);
 
        if (vxlan_collect_metadata(vs)) {
                __be32 vni = vxlan_vni(vxlan_hdr(skb)->vx_vni);
-- 
1.8.3.1

Reply via email to