Loading include/net/ip.h +9 −0 Original line number Diff line number Diff line Loading @@ -441,6 +441,15 @@ void ip_dst_init_metrics(struct dst_entry *dst, struct dst_metrics *fib_metrics) } } static inline void ip_dst_metrics_put(struct dst_entry *dst) { struct dst_metrics *p = (struct dst_metrics *)DST_METRICS_PTR(dst); if (p != &dst_default_metrics && refcount_dec_and_test(&p->refcnt)) kfree(p); } u32 ip_idents_reserve(u32 hash, int segs); void __ip_select_ident(struct net *net, struct iphdr *iph, int segs); Loading net/ipv4/route.c +1 −4 Original line number Diff line number Diff line Loading @@ -1476,12 +1476,9 @@ void rt_del_uncached_list(struct rtable *rt) static void ipv4_dst_destroy(struct dst_entry *dst) { struct dst_metrics *p = (struct dst_metrics *)DST_METRICS_PTR(dst); struct rtable *rt = (struct rtable *)dst; if (p != &dst_default_metrics && refcount_dec_and_test(&p->refcnt)) kfree(p); ip_dst_metrics_put(dst); rt_del_uncached_list(rt); } Loading net/ipv6/route.c +1 −4 Original line number Diff line number Diff line Loading @@ -364,14 +364,11 @@ EXPORT_SYMBOL(ip6_dst_alloc); static void ip6_dst_destroy(struct dst_entry *dst) { struct dst_metrics *p = (struct dst_metrics *)DST_METRICS_PTR(dst); struct rt6_info *rt = (struct rt6_info *)dst; struct fib6_info *from; struct inet6_dev *idev; if (p != &dst_default_metrics && refcount_dec_and_test(&p->refcnt)) kfree(p); ip_dst_metrics_put(dst); rt6_uncached_list_del(rt); idev = rt->rt6i_idev; Loading Loading
include/net/ip.h +9 −0 Original line number Diff line number Diff line Loading @@ -441,6 +441,15 @@ void ip_dst_init_metrics(struct dst_entry *dst, struct dst_metrics *fib_metrics) } } static inline void ip_dst_metrics_put(struct dst_entry *dst) { struct dst_metrics *p = (struct dst_metrics *)DST_METRICS_PTR(dst); if (p != &dst_default_metrics && refcount_dec_and_test(&p->refcnt)) kfree(p); } u32 ip_idents_reserve(u32 hash, int segs); void __ip_select_ident(struct net *net, struct iphdr *iph, int segs); Loading
net/ipv4/route.c +1 −4 Original line number Diff line number Diff line Loading @@ -1476,12 +1476,9 @@ void rt_del_uncached_list(struct rtable *rt) static void ipv4_dst_destroy(struct dst_entry *dst) { struct dst_metrics *p = (struct dst_metrics *)DST_METRICS_PTR(dst); struct rtable *rt = (struct rtable *)dst; if (p != &dst_default_metrics && refcount_dec_and_test(&p->refcnt)) kfree(p); ip_dst_metrics_put(dst); rt_del_uncached_list(rt); } Loading
net/ipv6/route.c +1 −4 Original line number Diff line number Diff line Loading @@ -364,14 +364,11 @@ EXPORT_SYMBOL(ip6_dst_alloc); static void ip6_dst_destroy(struct dst_entry *dst) { struct dst_metrics *p = (struct dst_metrics *)DST_METRICS_PTR(dst); struct rt6_info *rt = (struct rt6_info *)dst; struct fib6_info *from; struct inet6_dev *idev; if (p != &dst_default_metrics && refcount_dec_and_test(&p->refcnt)) kfree(p); ip_dst_metrics_put(dst); rt6_uncached_list_del(rt); idev = rt->rt6i_idev; Loading