diff --git a/net/core/dev.c b/net/core/dev.c index 1618d5a676c47ca6e02a0bd0b0a7ba35e3ebe5c5..5e668d3b1e7177998eaa381be644d9ca417536d7 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8753,6 +8753,13 @@ int register_netdevice(struct net_device *dev) rcu_barrier(); dev->reg_state = NETREG_UNREGISTERED; + /* We should put the kobject that hold in + * netdev_unregister_kobject(), otherwise + * the net device cannot be freed when + * driver calls free_netdev(), because the + * kobject is being hold. + */ + kobject_put(&dev->dev.kobj); } /* * Prevent userspace races by waiting until the network