diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-04-16 03:45:56 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-04-16 03:45:56 -0400 |
commit | 3a931a80cb25f905da377d1bb0ba9b1641aa579a (patch) | |
tree | b5ab114a1fb56af8728db3d21d7c463487d6214e /net/core | |
parent | fc54c65853dbfd2f70ff827b73344f9de4e4b501 (diff) |
[RTNL]: Relax for_each_netdev_safe in __rtnl_link_unregister.
Each potential list_del (happening from inside a ->dellink call)
is followed by goto restart, so there's no need in _safe iteration.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/rtnetlink.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index da99ac0871bf..edc6dbfe48f2 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -277,12 +277,12 @@ EXPORT_SYMBOL_GPL(rtnl_link_register); | |||
277 | */ | 277 | */ |
278 | void __rtnl_link_unregister(struct rtnl_link_ops *ops) | 278 | void __rtnl_link_unregister(struct rtnl_link_ops *ops) |
279 | { | 279 | { |
280 | struct net_device *dev, *n; | 280 | struct net_device *dev; |
281 | struct net *net; | 281 | struct net *net; |
282 | 282 | ||
283 | for_each_net(net) { | 283 | for_each_net(net) { |
284 | restart: | 284 | restart: |
285 | for_each_netdev_safe(net, dev, n) { | 285 | for_each_netdev(net, dev) { |
286 | if (dev->rtnl_link_ops == ops) { | 286 | if (dev->rtnl_link_ops == ops) { |
287 | ops->dellink(dev); | 287 | ops->dellink(dev); |
288 | goto restart; | 288 | goto restart; |