diff options
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r-- | net/ipv6/udp.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index f4058150262b..18786098fd41 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
@@ -525,8 +525,10 @@ void __udp6_lib_err(struct sk_buff *skb, struct inet6_skb_parm *opt, | |||
525 | 525 | ||
526 | if (type == ICMPV6_PKT_TOOBIG) | 526 | if (type == ICMPV6_PKT_TOOBIG) |
527 | ip6_sk_update_pmtu(skb, sk, info); | 527 | ip6_sk_update_pmtu(skb, sk, info); |
528 | if (type == NDISC_REDIRECT) | 528 | if (type == NDISC_REDIRECT) { |
529 | ip6_sk_redirect(skb, sk); | 529 | ip6_sk_redirect(skb, sk); |
530 | goto out; | ||
531 | } | ||
530 | 532 | ||
531 | np = inet6_sk(sk); | 533 | np = inet6_sk(sk); |
532 | 534 | ||
@@ -1223,9 +1225,6 @@ do_udp_sendmsg: | |||
1223 | if (tclass < 0) | 1225 | if (tclass < 0) |
1224 | tclass = np->tclass; | 1226 | tclass = np->tclass; |
1225 | 1227 | ||
1226 | if (dontfrag < 0) | ||
1227 | dontfrag = np->dontfrag; | ||
1228 | |||
1229 | if (msg->msg_flags&MSG_CONFIRM) | 1228 | if (msg->msg_flags&MSG_CONFIRM) |
1230 | goto do_confirm; | 1229 | goto do_confirm; |
1231 | back_from_confirm: | 1230 | back_from_confirm: |
@@ -1244,6 +1243,8 @@ back_from_confirm: | |||
1244 | up->pending = AF_INET6; | 1243 | up->pending = AF_INET6; |
1245 | 1244 | ||
1246 | do_append_data: | 1245 | do_append_data: |
1246 | if (dontfrag < 0) | ||
1247 | dontfrag = np->dontfrag; | ||
1247 | up->len += ulen; | 1248 | up->len += ulen; |
1248 | getfrag = is_udplite ? udplite_getfrag : ip_generic_getfrag; | 1249 | getfrag = is_udplite ? udplite_getfrag : ip_generic_getfrag; |
1249 | err = ip6_append_data(sk, getfrag, msg->msg_iov, ulen, | 1250 | err = ip6_append_data(sk, getfrag, msg->msg_iov, ulen, |