| From 06084de42dcde1ce32c16973ca5fc100ddd9d672 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 14 Apr 2022 13:34:26 -0700 |
| Subject: ip6_gre: Avoid updating tunnel->tun_hlen in __gre6_xmit() |
| |
| From: Peilin Ye <peilin.ye@bytedance.com> |
| |
| [ Upstream commit f40c064e933d7787ca7411b699504d7a2664c1f5 ] |
| |
| Do not update tunnel->tun_hlen in data plane code. Use a local variable |
| instead, just like "tunnel_hlen" in net/ipv4/ip_gre.c:gre_fb_xmit(). |
| |
| Co-developed-by: Cong Wang <cong.wang@bytedance.com> |
| Signed-off-by: Cong Wang <cong.wang@bytedance.com> |
| Signed-off-by: Peilin Ye <peilin.ye@bytedance.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/ipv6/ip6_gre.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c |
| index 9a0263f25232..949d6fbc1ca0 100644 |
| --- a/net/ipv6/ip6_gre.c |
| +++ b/net/ipv6/ip6_gre.c |
| @@ -743,6 +743,7 @@ static netdev_tx_t __gre6_xmit(struct sk_buff *skb, |
| struct ip_tunnel_info *tun_info; |
| const struct ip_tunnel_key *key; |
| __be16 flags; |
| + int tun_hlen; |
| |
| tun_info = skb_tunnel_info_txcheck(skb); |
| if (IS_ERR(tun_info) || |
| @@ -760,9 +761,9 @@ static netdev_tx_t __gre6_xmit(struct sk_buff *skb, |
| dsfield = key->tos; |
| flags = key->tun_flags & |
| (TUNNEL_CSUM | TUNNEL_KEY | TUNNEL_SEQ); |
| - tunnel->tun_hlen = gre_calc_hlen(flags); |
| + tun_hlen = gre_calc_hlen(flags); |
| |
| - gre_build_header(skb, tunnel->tun_hlen, |
| + gre_build_header(skb, tun_hlen, |
| flags, protocol, |
| tunnel_id_to_key32(tun_info->key.tun_id), |
| (flags & TUNNEL_SEQ) ? htonl(tunnel->o_seqno++) |
| -- |
| 2.35.1 |
| |