The magic macro change_nexthops introduces a variable nh which overlaps
previous declaration of nh.
Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]>
--- a/net/ipv4/fib_semantics.c 2008-01-23 11:03:55.000000000 -0800
+++ b/net/ipv4/fib_semantics.c 2008-01-23 11:05:12.000000000 -0800
@@ -1059,14 +1059,14 @@ int fib_sync_down(__be32 local, struct n
unsigned int hash = fib_devindex_hashfn(dev->ifindex);
struct hlist_head *head = &fib_info_devhash[hash];
struct hlist_node *node;
- struct fib_nh *nh;
+ struct fib_nh *nh1;
- hlist_for_each_entry(nh, node, head, nh_hash) {
- struct fib_info *fi = nh->nh_parent;
+ hlist_for_each_entry(nh1, node, head, nh_hash) {
+ struct fib_info *fi = nh1->nh_parent;
int dead;
BUG_ON(!fi->fib_nhs);
- if (nh->nh_dev != dev || fi == prev_fi)
+ if (nh1->nh_dev != dev || fi == prev_fi)
continue;
prev_fi = fi;
dead = 0;
@@ -1091,6 +1091,7 @@ int fib_sync_down(__be32 local, struct n
}
#endif
} endfor_nexthops(fi)
+
if (dead == fi->fib_nhs) {
fi->fib_flags |= RTNH_F_DEAD;
ret++;
@@ -1114,7 +1115,7 @@ int fib_sync_up(struct net_device *dev)
unsigned int hash;
struct hlist_head *head;
struct hlist_node *node;
- struct fib_nh *nh;
+ struct fib_nh *nh1;
int ret;
if (!(dev->flags&IFF_UP))
@@ -1125,12 +1126,12 @@ int fib_sync_up(struct net_device *dev)
head = &fib_info_devhash[hash];
ret = 0;
- hlist_for_each_entry(nh, node, head, nh_hash) {
- struct fib_info *fi = nh->nh_parent;
+ hlist_for_each_entry(nh1, node, head, nh_hash) {
+ struct fib_info *fi = nh1->nh_parent;
int alive;
BUG_ON(!fi->fib_nhs);
- if (nh->nh_dev != dev || fi == prev_fi)
+ if (nh1->nh_dev != dev || fi == prev_fi)
continue;
prev_fi = fi;
--
Stephen Hemminger <[EMAIL PROTECTED]>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html