aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/ip_gre.c4
-rw-r--r--net/ipv6/ip6_gre.c5
2 files changed, 7 insertions, 2 deletions
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 9c169bb2444d..f200b304f76c 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -722,10 +722,12 @@ static netdev_tx_t erspan_xmit(struct sk_buff *skb,
722 erspan_build_header(skb, ntohl(tunnel->parms.o_key), 722 erspan_build_header(skb, ntohl(tunnel->parms.o_key),
723 tunnel->index, 723 tunnel->index,
724 truncate, true); 724 truncate, true);
725 else 725 else if (tunnel->erspan_ver == 2)
726 erspan_build_header_v2(skb, ntohl(tunnel->parms.o_key), 726 erspan_build_header_v2(skb, ntohl(tunnel->parms.o_key),
727 tunnel->dir, tunnel->hwid, 727 tunnel->dir, tunnel->hwid,
728 truncate, true); 728 truncate, true);
729 else
730 goto free_skb;
729 731
730 tunnel->parms.o_flags &= ~TUNNEL_KEY; 732 tunnel->parms.o_flags &= ~TUNNEL_KEY;
731 __gre_xmit(skb, dev, &tunnel->parms.iph, htons(ETH_P_ERSPAN)); 733 __gre_xmit(skb, dev, &tunnel->parms.iph, htons(ETH_P_ERSPAN));
diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
index 69727bc168cb..a3e1dec96a74 100644
--- a/net/ipv6/ip6_gre.c
+++ b/net/ipv6/ip6_gre.c
@@ -979,11 +979,14 @@ static netdev_tx_t ip6erspan_tunnel_xmit(struct sk_buff *skb,
979 erspan_build_header(skb, ntohl(t->parms.o_key), 979 erspan_build_header(skb, ntohl(t->parms.o_key),
980 t->parms.index, 980 t->parms.index,
981 truncate, false); 981 truncate, false);
982 else 982 else if (t->parms.erspan_ver == 2)
983 erspan_build_header_v2(skb, ntohl(t->parms.o_key), 983 erspan_build_header_v2(skb, ntohl(t->parms.o_key),
984 t->parms.dir, 984 t->parms.dir,
985 t->parms.hwid, 985 t->parms.hwid,
986 truncate, false); 986 truncate, false);
987 else
988 goto tx_err;
989
987 fl6.daddr = t->parms.raddr; 990 fl6.daddr = t->parms.raddr;
988 } 991 }
989 992