diff options
Diffstat (limited to 'net/ipv6/inet6_connection_sock.c')
| -rw-r--r-- | net/ipv6/inet6_connection_sock.c | 9 | 
1 files changed, 2 insertions, 7 deletions
diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c index 0c5e3c3b7fd5..8a1628023bd1 100644 --- a/net/ipv6/inet6_connection_sock.c +++ b/net/ipv6/inet6_connection_sock.c  | |||
| @@ -185,7 +185,7 @@ int inet6_csk_xmit(struct sk_buff *skb) | |||
| 185 | struct ipv6_pinfo *np = inet6_sk(sk); | 185 | struct ipv6_pinfo *np = inet6_sk(sk); | 
| 186 | struct flowi fl; | 186 | struct flowi fl; | 
| 187 | struct dst_entry *dst; | 187 | struct dst_entry *dst; | 
| 188 | struct in6_addr *final_p = NULL, final; | 188 | struct in6_addr *final_p, final; | 
| 189 | 189 | ||
| 190 | memset(&fl, 0, sizeof(fl)); | 190 | memset(&fl, 0, sizeof(fl)); | 
| 191 | fl.proto = sk->sk_protocol; | 191 | fl.proto = sk->sk_protocol; | 
| @@ -199,12 +199,7 @@ int inet6_csk_xmit(struct sk_buff *skb) | |||
| 199 | fl.fl_ip_dport = inet->inet_dport; | 199 | fl.fl_ip_dport = inet->inet_dport; | 
| 200 | security_sk_classify_flow(sk, &fl); | 200 | security_sk_classify_flow(sk, &fl); | 
| 201 | 201 | ||
| 202 | if (np->opt && np->opt->srcrt) { | 202 | final_p = fl6_update_dst(&fl, np->opt, &final); | 
| 203 | struct rt0_hdr *rt0 = (struct rt0_hdr *)np->opt->srcrt; | ||
| 204 | ipv6_addr_copy(&final, &fl.fl6_dst); | ||
| 205 | ipv6_addr_copy(&fl.fl6_dst, rt0->addr); | ||
| 206 | final_p = &final; | ||
| 207 | } | ||
| 208 | 203 | ||
| 209 | dst = __inet6_csk_dst_check(sk, np->dst_cookie); | 204 | dst = __inet6_csk_dst_check(sk, np->dst_cookie); | 
| 210 | 205 | ||
