|
@@ -1308,7 +1308,7 @@ do_udp_sendmsg:
|
|
|
|
|
|
fl6.flowlabel = ip6_make_flowinfo(ipc6.tclass, fl6.flowlabel);
|
|
|
|
|
|
- dst = ip6_sk_dst_lookup_flow(sk, &fl6, final_p, false);
|
|
|
+ dst = ip6_sk_dst_lookup_flow(sk, &fl6, final_p, connected);
|
|
|
if (IS_ERR(dst)) {
|
|
|
err = PTR_ERR(dst);
|
|
|
dst = NULL;
|
|
@@ -1333,7 +1333,7 @@ back_from_confirm:
|
|
|
err = PTR_ERR(skb);
|
|
|
if (!IS_ERR_OR_NULL(skb))
|
|
|
err = udp_v6_send_skb(skb, &fl6);
|
|
|
- goto release_dst;
|
|
|
+ goto out;
|
|
|
}
|
|
|
|
|
|
lock_sock(sk);
|
|
@@ -1367,23 +1367,6 @@ do_append_data:
|
|
|
err = np->recverr ? net_xmit_errno(err) : 0;
|
|
|
release_sock(sk);
|
|
|
|
|
|
-release_dst:
|
|
|
- if (dst) {
|
|
|
- if (connected) {
|
|
|
- ip6_dst_store(sk, dst,
|
|
|
- ipv6_addr_equal(&fl6.daddr, &sk->sk_v6_daddr) ?
|
|
|
- &sk->sk_v6_daddr : NULL,
|
|
|
-#ifdef CONFIG_IPV6_SUBTREES
|
|
|
- ipv6_addr_equal(&fl6.saddr, &np->saddr) ?
|
|
|
- &np->saddr :
|
|
|
-#endif
|
|
|
- NULL);
|
|
|
- } else {
|
|
|
- dst_release(dst);
|
|
|
- }
|
|
|
- dst = NULL;
|
|
|
- }
|
|
|
-
|
|
|
out:
|
|
|
dst_release(dst);
|
|
|
fl6_sock_release(flowlabel);
|