diff options
Diffstat (limited to 'net/decnet/dn_route.c')
| -rw-r--r-- | net/decnet/dn_route.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c index 4b9518a0d248..6f95612b4d32 100644 --- a/net/decnet/dn_route.c +++ b/net/decnet/dn_route.c | |||
| @@ -188,12 +188,6 @@ static inline void dnrt_free(struct dn_route *rt) | |||
| 188 | call_rcu_bh(&rt->dst.rcu_head, dst_rcu_free); | 188 | call_rcu_bh(&rt->dst.rcu_head, dst_rcu_free); |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | static inline void dnrt_drop(struct dn_route *rt) | ||
| 192 | { | ||
| 193 | dst_release(&rt->dst); | ||
| 194 | call_rcu_bh(&rt->dst.rcu_head, dst_rcu_free); | ||
| 195 | } | ||
| 196 | |||
| 197 | static void dn_dst_check_expire(unsigned long dummy) | 191 | static void dn_dst_check_expire(unsigned long dummy) |
| 198 | { | 192 | { |
| 199 | int i; | 193 | int i; |
| @@ -248,7 +242,7 @@ static int dn_dst_gc(struct dst_ops *ops) | |||
| 248 | } | 242 | } |
| 249 | *rtp = rt->dst.dn_next; | 243 | *rtp = rt->dst.dn_next; |
| 250 | rt->dst.dn_next = NULL; | 244 | rt->dst.dn_next = NULL; |
| 251 | dnrt_drop(rt); | 245 | dnrt_free(rt); |
| 252 | break; | 246 | break; |
| 253 | } | 247 | } |
| 254 | spin_unlock_bh(&dn_rt_hash_table[i].lock); | 248 | spin_unlock_bh(&dn_rt_hash_table[i].lock); |
| @@ -350,7 +344,7 @@ static int dn_insert_route(struct dn_route *rt, unsigned int hash, struct dn_rou | |||
| 350 | dst_use(&rth->dst, now); | 344 | dst_use(&rth->dst, now); |
| 351 | spin_unlock_bh(&dn_rt_hash_table[hash].lock); | 345 | spin_unlock_bh(&dn_rt_hash_table[hash].lock); |
| 352 | 346 | ||
| 353 | dnrt_drop(rt); | 347 | dst_free(&rt->dst); |
| 354 | *rp = rth; | 348 | *rp = rth; |
| 355 | return 0; | 349 | return 0; |
| 356 | } | 350 | } |
| @@ -380,7 +374,7 @@ static void dn_run_flush(unsigned long dummy) | |||
| 380 | for(; rt; rt = next) { | 374 | for(; rt; rt = next) { |
| 381 | next = rcu_dereference_raw(rt->dst.dn_next); | 375 | next = rcu_dereference_raw(rt->dst.dn_next); |
| 382 | RCU_INIT_POINTER(rt->dst.dn_next, NULL); | 376 | RCU_INIT_POINTER(rt->dst.dn_next, NULL); |
| 383 | dst_free((struct dst_entry *)rt); | 377 | dnrt_free(rt); |
| 384 | } | 378 | } |
| 385 | 379 | ||
| 386 | nothing_to_declare: | 380 | nothing_to_declare: |
| @@ -1187,7 +1181,7 @@ make_route: | |||
| 1187 | if (dev_out->flags & IFF_LOOPBACK) | 1181 | if (dev_out->flags & IFF_LOOPBACK) |
| 1188 | flags |= RTCF_LOCAL; | 1182 | flags |= RTCF_LOCAL; |
| 1189 | 1183 | ||
| 1190 | rt = dst_alloc(&dn_dst_ops, dev_out, 1, DST_OBSOLETE_NONE, DST_HOST); | 1184 | rt = dst_alloc(&dn_dst_ops, dev_out, 0, DST_OBSOLETE_NONE, DST_HOST); |
| 1191 | if (rt == NULL) | 1185 | if (rt == NULL) |
| 1192 | goto e_nobufs; | 1186 | goto e_nobufs; |
| 1193 | 1187 | ||
