|
@@ -323,8 +323,18 @@ static void free_msi_irqs(struct pci_dev *dev)
|
|
if (list_is_last(&entry->list, &dev->msi_list))
|
|
if (list_is_last(&entry->list, &dev->msi_list))
|
|
iounmap(entry->mask_base);
|
|
iounmap(entry->mask_base);
|
|
}
|
|
}
|
|
- kobject_del(&entry->kobj);
|
|
|
|
- kobject_put(&entry->kobj);
|
|
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Its possible that we get into this path
|
|
|
|
+ * When populate_msi_sysfs fails, which means the entries
|
|
|
|
+ * were not registered with sysfs. In that case don't
|
|
|
|
+ * unregister them.
|
|
|
|
+ */
|
|
|
|
+ if (entry->kobj.parent) {
|
|
|
|
+ kobject_del(&entry->kobj);
|
|
|
|
+ kobject_put(&entry->kobj);
|
|
|
|
+ }
|
|
|
|
+
|
|
list_del(&entry->list);
|
|
list_del(&entry->list);
|
|
kfree(entry);
|
|
kfree(entry);
|
|
}
|
|
}
|