On 10/5/18 7:08 AM, Eric Dumazet wrote:
> Commit 767a2217533fed6 ("net: common metrics init helper for FIB entries")
> is not correct because we need to better deal with error paths.
> 
> I will submit this more formally when I can reach my workstation in a few 
> minutes :
> 
> diff --git a/net/ipv6/route.c b/net/ipv6/route.c
> index 
> 6c1d817151cae45421dc976c5ea082b4115650be..74d97addf1af20dda0c2b6a2018e88696f9f7d5a
>  100644
> --- a/net/ipv6/route.c
> +++ b/net/ipv6/route.c
> @@ -2976,6 +2976,8 @@ static struct fib6_info *ip6_route_info_create(struct 
> fib6_config *cfg,
>         rt->fib6_metrics = ip_fib_metrics_init(net, cfg->fc_mx, 
> cfg->fc_mx_len);
>         if (IS_ERR(rt->fib6_metrics)) {
>                 err = PTR_ERR(rt->fib6_metrics);
> +               /* Do not leave garbage there. */
> +               rt->fib6_metrics = (struct dst_metrics *)&dst_default_metrics;
>                 goto out;
>         }
>  
> 

Yes, I was focused on the memory leaks and cleanup and forgot to
purposely fail the alloc for the metrics. The above is one way to fix
it. Thanks for spotting it.

Reply via email to