hc
2024-05-10 10ebd8556b7990499c896a550e3d416b444211e6
kernel/net/ipv4/ip_tunnel.c
....@@ -613,10 +613,10 @@
613613 }
614614
615615 headroom += LL_RESERVED_SPACE(rt->dst.dev) + rt->dst.header_len;
616
- if (headroom > dev->needed_headroom)
617
- dev->needed_headroom = headroom;
616
+ if (headroom > READ_ONCE(dev->needed_headroom))
617
+ WRITE_ONCE(dev->needed_headroom, headroom);
618618
619
- if (skb_cow_head(skb, dev->needed_headroom)) {
619
+ if (skb_cow_head(skb, READ_ONCE(dev->needed_headroom))) {
620620 ip_rt_put(rt);
621621 goto tx_dropped;
622622 }
....@@ -797,10 +797,10 @@
797797
798798 max_headroom = LL_RESERVED_SPACE(rt->dst.dev) + sizeof(struct iphdr)
799799 + rt->dst.header_len + ip_encap_hlen(&tunnel->encap);
800
- if (max_headroom > dev->needed_headroom)
801
- dev->needed_headroom = max_headroom;
800
+ if (max_headroom > READ_ONCE(dev->needed_headroom))
801
+ WRITE_ONCE(dev->needed_headroom, max_headroom);
802802
803
- if (skb_cow_head(skb, dev->needed_headroom)) {
803
+ if (skb_cow_head(skb, READ_ONCE(dev->needed_headroom))) {
804804 ip_rt_put(rt);
805805 dev->stats.tx_dropped++;
806806 kfree_skb(skb);