|
@@ -480,10 +480,6 @@ vti6_xmit(struct sk_buff *skb, struct net_device *dev, struct flowi *fl)
|
|
|
goto tx_err_dst_release;
|
|
|
}
|
|
|
|
|
|
- skb_scrub_packet(skb, !net_eq(t->net, dev_net(dev)));
|
|
|
- skb_dst_set(skb, dst);
|
|
|
- skb->dev = skb_dst(skb)->dev;
|
|
|
-
|
|
|
mtu = dst_mtu(dst);
|
|
|
if (!skb->ignore_df && skb->len > mtu) {
|
|
|
skb_dst_update_pmtu(skb, mtu);
|
|
@@ -498,9 +494,14 @@ vti6_xmit(struct sk_buff *skb, struct net_device *dev, struct flowi *fl)
|
|
|
htonl(mtu));
|
|
|
}
|
|
|
|
|
|
- return -EMSGSIZE;
|
|
|
+ err = -EMSGSIZE;
|
|
|
+ goto tx_err_dst_release;
|
|
|
}
|
|
|
|
|
|
+ skb_scrub_packet(skb, !net_eq(t->net, dev_net(dev)));
|
|
|
+ skb_dst_set(skb, dst);
|
|
|
+ skb->dev = skb_dst(skb)->dev;
|
|
|
+
|
|
|
err = dst_output(t->net, skb->sk, skb);
|
|
|
if (net_xmit_eval(err) == 0) {
|
|
|
struct pcpu_sw_netstats *tstats = this_cpu_ptr(dev->tstats);
|