|
@@ -5035,6 +5035,11 @@ int register_netdevice(struct net_device *dev)
|
|
|
rollback_registered(dev);
|
|
|
dev->reg_state = NETREG_UNREGISTERED;
|
|
|
}
|
|
|
+ /*
|
|
|
+ * Prevent userspace races by waiting until the network
|
|
|
+ * device is fully setup before sending notifications.
|
|
|
+ */
|
|
|
+ rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U);
|
|
|
|
|
|
out:
|
|
|
return ret;
|
|
@@ -5597,6 +5602,12 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
|
|
|
/* Notify protocols, that a new device appeared. */
|
|
|
call_netdevice_notifiers(NETDEV_REGISTER, dev);
|
|
|
|
|
|
+ /*
|
|
|
+ * Prevent userspace races by waiting until the network
|
|
|
+ * device is fully setup before sending notifications.
|
|
|
+ */
|
|
|
+ rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U);
|
|
|
+
|
|
|
synchronize_net();
|
|
|
err = 0;
|
|
|
out:
|