On Wed, Nov 9, 2016 at 8:10 AM, Jiri Benc <jb...@redhat.com> wrote: > On Sat, 5 Nov 2016 11:45:52 -0700, Pravin B Shelar wrote: >> @@ -2058,7 +2059,7 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct >> net_device *dev, >> err = vxlan_build_skb(skb, &rt->dst, sizeof(struct iphdr), >> vni, md, flags, udp_sum); >> if (err < 0) >> - goto xmit_tx_error; >> + goto tx_error; > > Seems you're leaking rt here? > I have moved the dst error handling to vxlan_build_skb(), which is releasing the dst entry.
>> @@ -2117,11 +2118,9 @@ static void vxlan_xmit_one(struct sk_buff *skb, >> struct net_device *dev, >> skb_scrub_packet(skb, xnet); >> err = vxlan_build_skb(skb, ndst, sizeof(struct ipv6hdr), >> vni, md, flags, udp_sum); >> - if (err < 0) { >> - dst_release(ndst); >> - dev->stats.tx_errors++; >> - return; >> - } >> + if (err < 0) >> + goto tx_error; > > And ndst here? > same as above.