diff options
Diffstat (limited to 'net/ipv4/ipip.c')
-rw-r--r-- | net/ipv4/ipip.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c index 3a4ad7d82f67..099fc1c428b4 100644 --- a/net/ipv4/ipip.c +++ b/net/ipv4/ipip.c | |||
@@ -140,13 +140,6 @@ static void ipip_tunnel_setup(struct net_device *dev); | |||
140 | static void ipip_dev_free(struct net_device *dev); | 140 | static void ipip_dev_free(struct net_device *dev); |
141 | static struct rtnl_link_ops ipip_link_ops __read_mostly; | 141 | static struct rtnl_link_ops ipip_link_ops __read_mostly; |
142 | 142 | ||
143 | /* | ||
144 | * Locking : hash tables are protected by RCU and RTNL | ||
145 | */ | ||
146 | |||
147 | #define for_each_ip_tunnel_rcu(start) \ | ||
148 | for (t = rcu_dereference(start); t; t = rcu_dereference(t->next)) | ||
149 | |||
150 | static struct rtnl_link_stats64 *ipip_get_stats64(struct net_device *dev, | 143 | static struct rtnl_link_stats64 *ipip_get_stats64(struct net_device *dev, |
151 | struct rtnl_link_stats64 *tot) | 144 | struct rtnl_link_stats64 *tot) |
152 | { | 145 | { |
@@ -189,16 +182,16 @@ static struct ip_tunnel *ipip_tunnel_lookup(struct net *net, | |||
189 | struct ip_tunnel *t; | 182 | struct ip_tunnel *t; |
190 | struct ipip_net *ipn = net_generic(net, ipip_net_id); | 183 | struct ipip_net *ipn = net_generic(net, ipip_net_id); |
191 | 184 | ||
192 | for_each_ip_tunnel_rcu(ipn->tunnels_r_l[h0 ^ h1]) | 185 | for_each_ip_tunnel_rcu(t, ipn->tunnels_r_l[h0 ^ h1]) |
193 | if (local == t->parms.iph.saddr && | 186 | if (local == t->parms.iph.saddr && |
194 | remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP)) | 187 | remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP)) |
195 | return t; | 188 | return t; |
196 | 189 | ||
197 | for_each_ip_tunnel_rcu(ipn->tunnels_r[h0]) | 190 | for_each_ip_tunnel_rcu(t, ipn->tunnels_r[h0]) |
198 | if (remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP)) | 191 | if (remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP)) |
199 | return t; | 192 | return t; |
200 | 193 | ||
201 | for_each_ip_tunnel_rcu(ipn->tunnels_l[h1]) | 194 | for_each_ip_tunnel_rcu(t, ipn->tunnels_l[h1]) |
202 | if (local == t->parms.iph.saddr && (t->dev->flags&IFF_UP)) | 195 | if (local == t->parms.iph.saddr && (t->dev->flags&IFF_UP)) |
203 | return t; | 196 | return t; |
204 | 197 | ||