diff options
author | David S. Miller <davem@davemloft.net> | 2010-02-28 22:23:06 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-28 22:23:06 -0500 |
commit | 47871889c601d8199c51a4086f77eebd77c29b0b (patch) | |
tree | 40cdcac3bff0ee40cc33dcca61d0577cdf965f77 /net/ipv4/route.c | |
parent | c16cc0b464b8876cfd57ce1c1dbcb6f9a6a0bce3 (diff) | |
parent | 30ff056c42c665b9ea535d8515890857ae382540 (diff) |
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Conflicts:
drivers/firmware/iscsi_ibft.c
Diffstat (limited to 'net/ipv4/route.c')
-rw-r--r-- | net/ipv4/route.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 04762d3bef71..b2ba5581d2ae 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -287,12 +287,12 @@ static struct rtable *rt_cache_get_first(struct seq_file *seq) | |||
287 | if (!rt_hash_table[st->bucket].chain) | 287 | if (!rt_hash_table[st->bucket].chain) |
288 | continue; | 288 | continue; |
289 | rcu_read_lock_bh(); | 289 | rcu_read_lock_bh(); |
290 | r = rcu_dereference(rt_hash_table[st->bucket].chain); | 290 | r = rcu_dereference_bh(rt_hash_table[st->bucket].chain); |
291 | while (r) { | 291 | while (r) { |
292 | if (dev_net(r->u.dst.dev) == seq_file_net(seq) && | 292 | if (dev_net(r->u.dst.dev) == seq_file_net(seq) && |
293 | r->rt_genid == st->genid) | 293 | r->rt_genid == st->genid) |
294 | return r; | 294 | return r; |
295 | r = rcu_dereference(r->u.dst.rt_next); | 295 | r = rcu_dereference_bh(r->u.dst.rt_next); |
296 | } | 296 | } |
297 | rcu_read_unlock_bh(); | 297 | rcu_read_unlock_bh(); |
298 | } | 298 | } |
@@ -314,7 +314,7 @@ static struct rtable *__rt_cache_get_next(struct seq_file *seq, | |||
314 | rcu_read_lock_bh(); | 314 | rcu_read_lock_bh(); |
315 | r = rt_hash_table[st->bucket].chain; | 315 | r = rt_hash_table[st->bucket].chain; |
316 | } | 316 | } |
317 | return rcu_dereference(r); | 317 | return rcu_dereference_bh(r); |
318 | } | 318 | } |
319 | 319 | ||
320 | static struct rtable *rt_cache_get_next(struct seq_file *seq, | 320 | static struct rtable *rt_cache_get_next(struct seq_file *seq, |
@@ -2694,8 +2694,8 @@ int __ip_route_output_key(struct net *net, struct rtable **rp, | |||
2694 | hash = rt_hash(flp->fl4_dst, flp->fl4_src, flp->oif, rt_genid(net)); | 2694 | hash = rt_hash(flp->fl4_dst, flp->fl4_src, flp->oif, rt_genid(net)); |
2695 | 2695 | ||
2696 | rcu_read_lock_bh(); | 2696 | rcu_read_lock_bh(); |
2697 | for (rth = rcu_dereference(rt_hash_table[hash].chain); rth; | 2697 | for (rth = rcu_dereference_bh(rt_hash_table[hash].chain); rth; |
2698 | rth = rcu_dereference(rth->u.dst.rt_next)) { | 2698 | rth = rcu_dereference_bh(rth->u.dst.rt_next)) { |
2699 | if (rth->fl.fl4_dst == flp->fl4_dst && | 2699 | if (rth->fl.fl4_dst == flp->fl4_dst && |
2700 | rth->fl.fl4_src == flp->fl4_src && | 2700 | rth->fl.fl4_src == flp->fl4_src && |
2701 | rth->fl.iif == 0 && | 2701 | rth->fl.iif == 0 && |
@@ -3013,8 +3013,8 @@ int ip_rt_dump(struct sk_buff *skb, struct netlink_callback *cb) | |||
3013 | if (!rt_hash_table[h].chain) | 3013 | if (!rt_hash_table[h].chain) |
3014 | continue; | 3014 | continue; |
3015 | rcu_read_lock_bh(); | 3015 | rcu_read_lock_bh(); |
3016 | for (rt = rcu_dereference(rt_hash_table[h].chain), idx = 0; rt; | 3016 | for (rt = rcu_dereference_bh(rt_hash_table[h].chain), idx = 0; rt; |
3017 | rt = rcu_dereference(rt->u.dst.rt_next), idx++) { | 3017 | rt = rcu_dereference_bh(rt->u.dst.rt_next), idx++) { |
3018 | if (!net_eq(dev_net(rt->u.dst.dev), net) || idx < s_idx) | 3018 | if (!net_eq(dev_net(rt->u.dst.dev), net) || idx < s_idx) |
3019 | continue; | 3019 | continue; |
3020 | if (rt_is_expired(rt)) | 3020 | if (rt_is_expired(rt)) |