|
@@ -3314,7 +3314,6 @@ void netdev_run_todo(void)
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
- netdev_unregister_sysfs(dev);
|
|
|
|
dev->reg_state = NETREG_UNREGISTERED;
|
|
dev->reg_state = NETREG_UNREGISTERED;
|
|
|
|
|
|
netdev_wait_allrefs(dev);
|
|
netdev_wait_allrefs(dev);
|
|
@@ -3325,11 +3324,11 @@ void netdev_run_todo(void)
|
|
BUG_TRAP(!dev->ip6_ptr);
|
|
BUG_TRAP(!dev->ip6_ptr);
|
|
BUG_TRAP(!dev->dn_ptr);
|
|
BUG_TRAP(!dev->dn_ptr);
|
|
|
|
|
|
- /* It must be the very last action,
|
|
|
|
- * after this 'dev' may point to freed up memory.
|
|
|
|
- */
|
|
|
|
if (dev->destructor)
|
|
if (dev->destructor)
|
|
dev->destructor(dev);
|
|
dev->destructor(dev);
|
|
|
|
+
|
|
|
|
+ /* Free network device */
|
|
|
|
+ kobject_put(&dev->dev.kobj);
|
|
}
|
|
}
|
|
|
|
|
|
out:
|
|
out:
|
|
@@ -3480,6 +3479,9 @@ void unregister_netdevice(struct net_device *dev)
|
|
/* Notifier chain MUST detach us from master device. */
|
|
/* Notifier chain MUST detach us from master device. */
|
|
BUG_TRAP(!dev->master);
|
|
BUG_TRAP(!dev->master);
|
|
|
|
|
|
|
|
+ /* Remove entries from sysfs */
|
|
|
|
+ netdev_unregister_sysfs(dev);
|
|
|
|
+
|
|
/* Finish processing unregister after unlock */
|
|
/* Finish processing unregister after unlock */
|
|
net_set_todo(dev);
|
|
net_set_todo(dev);
|
|
|
|
|