diff options
author | David Ahern <dsahern@gmail.com> | 2018-10-05 05:07:52 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-10-05 06:54:10 +0200 |
commit | cc5f0eb2164f9aa11fe631f8d905192e0233e262 (patch) | |
tree | c6544db0c15445adcacaf84bec9a12d11020c584 /net/ipv4 | |
parent | net: common metrics init helper for FIB entries (diff) | |
download | linux-cc5f0eb2164f9aa11fe631f8d905192e0233e262.tar.xz linux-cc5f0eb2164f9aa11fe631f8d905192e0233e262.zip |
net: Move free of fib_metrics to helper
Move the refcounting and potential free of dst metrics associated
with a fib entry to a helper and use it in both ipv4 and ipv6.
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/fib_semantics.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c index e8f4add597ed..f8c7ec8171a8 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c @@ -208,7 +208,6 @@ static void rt_fibinfo_free_cpus(struct rtable __rcu * __percpu *rtp) static void free_fib_info_rcu(struct rcu_head *head) { struct fib_info *fi = container_of(head, struct fib_info, rcu); - struct dst_metrics *m; change_nexthops(fi) { if (nexthop_nh->nh_dev) @@ -219,9 +218,8 @@ static void free_fib_info_rcu(struct rcu_head *head) rt_fibinfo_free(&nexthop_nh->nh_rth_input); } endfor_nexthops(fi); - m = fi->fib_metrics; - if (m != &dst_default_metrics && refcount_dec_and_test(&m->refcnt)) - kfree(m); + ip_fib_metrics_put(fi->fib_metrics); + kfree(fi); } |