diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 4f6943928fe8..9d8bfd9d444b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -1281,10 +1281,13 @@ static int __dev_close_many(struct list_head *head) | |||
1281 | 1281 | ||
1282 | static int __dev_close(struct net_device *dev) | 1282 | static int __dev_close(struct net_device *dev) |
1283 | { | 1283 | { |
1284 | int retval; | ||
1284 | LIST_HEAD(single); | 1285 | LIST_HEAD(single); |
1285 | 1286 | ||
1286 | list_add(&dev->unreg_list, &single); | 1287 | list_add(&dev->unreg_list, &single); |
1287 | return __dev_close_many(&single); | 1288 | retval = __dev_close_many(&single); |
1289 | list_del(&single); | ||
1290 | return retval; | ||
1288 | } | 1291 | } |
1289 | 1292 | ||
1290 | static int dev_close_many(struct list_head *head) | 1293 | static int dev_close_many(struct list_head *head) |
@@ -1326,7 +1329,7 @@ int dev_close(struct net_device *dev) | |||
1326 | 1329 | ||
1327 | list_add(&dev->unreg_list, &single); | 1330 | list_add(&dev->unreg_list, &single); |
1328 | dev_close_many(&single); | 1331 | dev_close_many(&single); |
1329 | 1332 | list_del(&single); | |
1330 | return 0; | 1333 | return 0; |
1331 | } | 1334 | } |
1332 | EXPORT_SYMBOL(dev_close); | 1335 | EXPORT_SYMBOL(dev_close); |
@@ -5243,6 +5246,7 @@ static void rollback_registered(struct net_device *dev) | |||
5243 | 5246 | ||
5244 | list_add(&dev->unreg_list, &single); | 5247 | list_add(&dev->unreg_list, &single); |
5245 | rollback_registered_many(&single); | 5248 | rollback_registered_many(&single); |
5249 | list_del(&single); | ||
5246 | } | 5250 | } |
5247 | 5251 | ||
5248 | u32 netdev_fix_features(struct net_device *dev, u32 features) | 5252 | u32 netdev_fix_features(struct net_device *dev, u32 features) |
@@ -6433,6 +6437,7 @@ static void __net_exit default_device_exit_batch(struct list_head *net_list) | |||
6433 | } | 6437 | } |
6434 | } | 6438 | } |
6435 | unregister_netdevice_many(&dev_kill_list); | 6439 | unregister_netdevice_many(&dev_kill_list); |
6440 | list_del(&dev_kill_list); | ||
6436 | rtnl_unlock(); | 6441 | rtnl_unlock(); |
6437 | } | 6442 | } |
6438 | 6443 | ||