• Eric Dumazet's avatar
    ipv6: unshare inetpeers · 21efcfa0
    Eric Dumazet authored
    We currently cow metrics a bit too soon in IPv6 case : All routes are
    tied to a single inetpeer entry.
    
    Change ip6_rt_copy() to get destination address as second argument, so
    that we fill rt6i_dst before the dst_copy_metrics() call.
    
    icmp6_dst_alloc() must set rt6i_dst before calling dst_metric_set(), or
    else the cow is done while rt6i_dst is still NULL.
    
    If orig route points to readonly metrics, we can share the pointer
    instead of performing the memory allocation and copy.
    Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    21efcfa0
route.c 71.5 KB