net-sysfs: Call dev_hold always in netdev_queue_add_kobject
[linux-2.6-microblaze.git] / net / core / net-sysfs.c
index ae3bcb1..5c46242 100644 (file)
@@ -1459,14 +1459,17 @@ static int netdev_queue_add_kobject(struct net_device *dev, int index)
        struct kobject *kobj = &queue->kobj;
        int error = 0;
 
+       /* Kobject_put later will trigger netdev_queue_release call
+        * which decreases dev refcount: Take that reference here
+        */
+       dev_hold(queue->dev);
+
        kobj->kset = dev->queues_kset;
        error = kobject_init_and_add(kobj, &netdev_queue_ktype, NULL,
                                     "tx-%u", index);
        if (error)
                goto err;
 
-       dev_hold(queue->dev);
-
 #ifdef CONFIG_BQL
        error = sysfs_create_group(kobj, &dql_group);
        if (error)