Subject: Re: [PATCH RFC v2 net-next 19/21] net/ipv6: separate handling of FIB entries from dst based routes

From: Ido Schimmel <[email-masked]>
Date: Sat, 24 Mar 2018 17:31:00 +0300

On Sun, Mar 18, 2018 at 08:36:20PM -0700, David Ahern wrote:
> @@ -405,18 +383,9 @@ static void ip6_dst_destroy(struct dst_entry *dst)
>  		rt->rt6i_idev = NULL;
>  		in6_dev_put(idev);
>  	}
> -	bucket = rcu_dereference_protected(rt->rt6i_exception_bucket, 1);
> -	if (bucket) {
> -		rt->rt6i_exception_bucket = NULL;
> -		kfree(bucket);
> -	}
> -
> -	m = rt->fib6_metrics;
> -	if (m != &dst_default_metrics && refcount_dec_and_test(&m->refcnt))
> -		kfree(m);

You remove this...

>  
>  	rt->from = NULL;
> -	dst_release(&from->dst);
> +	fib6_info_release(from);

Yet fib6_info_release() doesn't take care of it (unlike the IPv4
equivalent), which means you're leaking the metrics.

>  }