On Fri, Mar 25, 2016 at 04:55:27PM -0700, Martin KaFai Lau wrote:
>  void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, __be32 mtu)
>  {
> +     struct dst_entry *odst;
> +
> +     odst = sk_dst_get(sk);
> +
>       ip6_update_pmtu(skb, sock_net(sk), mtu,
>                       sk->sk_bound_dev_if, sk->sk_mark);
> +
> +     if (odst && !odst->error &&
> +         !ip6_dst_check(odst, inet6_sk(sk)->dst_cookie)) {
> +             struct dst_entry *ndst;
> +             struct flowi6 fl6;
> +
> +             build_skb_flow_key(&fl6, skb, sock_net(sk),
> +                                sk->sk_bound_dev_if, sk->sk_mark);
> +             ndst = ip6_route_output(sock_net(sk), NULL, &fl6);
> +             if (!ndst->error)
> +                     ip6_dst_store(sk, ndst, NULL, NULL);
oops...missed:
                else
                        dst_release(ndst);
> +     }
> +
> +     dst_release(odst);
>  }
>  EXPORT_SYMBOL_GPL(ip6_sk_update_pmtu);
>
> --
> 2.5.1

Reply via email to