diff options
Diffstat (limited to 'net/ipv4/fib_semantics.c')
-rw-r--r-- | net/ipv4/fib_semantics.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c index 641a5a2a9f9c..33e2c35b74b7 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c | |||
@@ -141,18 +141,8 @@ const struct fib_prop fib_props[RTN_MAX + 1] = { | |||
141 | }, | 141 | }, |
142 | }; | 142 | }; |
143 | 143 | ||
144 | |||
145 | /* Release a nexthop info record */ | 144 | /* Release a nexthop info record */ |
146 | 145 | ||
147 | static void free_fib_info_rcu(struct rcu_head *head) | ||
148 | { | ||
149 | struct fib_info *fi = container_of(head, struct fib_info, rcu); | ||
150 | |||
151 | if (fi->fib_metrics != (u32 *) dst_default_metrics) | ||
152 | kfree(fi->fib_metrics); | ||
153 | kfree(fi); | ||
154 | } | ||
155 | |||
156 | void free_fib_info(struct fib_info *fi) | 146 | void free_fib_info(struct fib_info *fi) |
157 | { | 147 | { |
158 | if (fi->fib_dead == 0) { | 148 | if (fi->fib_dead == 0) { |
@@ -166,7 +156,7 @@ void free_fib_info(struct fib_info *fi) | |||
166 | } endfor_nexthops(fi); | 156 | } endfor_nexthops(fi); |
167 | fib_info_cnt--; | 157 | fib_info_cnt--; |
168 | release_net(fi->fib_net); | 158 | release_net(fi->fib_net); |
169 | call_rcu(&fi->rcu, free_fib_info_rcu); | 159 | kfree_rcu(fi, rcu); |
170 | } | 160 | } |
171 | 161 | ||
172 | void fib_release_info(struct fib_info *fi) | 162 | void fib_release_info(struct fib_info *fi) |