]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/tipc/udp_media.c
ip_tunnel: Move stats update to iptunnel_xmit()
[karo-tx-linux.git] / net / tipc / udp_media.c
index 816914ef228dac5fff2433ebdc8ca957173dc19d..d63a911e7fe29b2f4ef9c1795e47cf5feb006be0 100644 (file)
@@ -157,8 +157,11 @@ static int tipc_udp_send_msg(struct net *net, struct sk_buff *skb,
        struct udp_media_addr *src = (struct udp_media_addr *)&b->addr.value;
        struct rtable *rt;
 
-       if (skb_headroom(skb) < UDP_MIN_HEADROOM)
-               pskb_expand_head(skb, UDP_MIN_HEADROOM, 0, GFP_ATOMIC);
+       if (skb_headroom(skb) < UDP_MIN_HEADROOM) {
+               err = pskb_expand_head(skb, UDP_MIN_HEADROOM, 0, GFP_ATOMIC);
+               if (err)
+                       goto tx_error;
+       }
 
        skb_set_inner_protocol(skb, htons(ETH_P_TIPC));
        ub = rcu_dereference_rtnl(b->media_ptr);
@@ -179,15 +182,9 @@ static int tipc_udp_send_msg(struct net *net, struct sk_buff *skb,
                        goto tx_error;
                }
                ttl = ip4_dst_hoplimit(&rt->dst);
-               err = udp_tunnel_xmit_skb(rt, ub->ubsock->sk, skb,
-                                         src->ipv4.s_addr,
-                                         dst->ipv4.s_addr, 0, ttl, 0,
-                                         src->udp_port, dst->udp_port,
-                                         false, true);
-               if (err < 0) {
-                       ip_rt_put(rt);
-                       goto tx_error;
-               }
+               udp_tunnel_xmit_skb(rt, ub->ubsock->sk, skb, src->ipv4.s_addr,
+                                   dst->ipv4.s_addr, 0, ttl, 0, src->udp_port,
+                                   dst->udp_port, false, true);
 #if IS_ENABLED(CONFIG_IPV6)
        } else {
                struct dst_entry *ndst;