diff --git a/[refs] b/[refs] index 6c2a736b73bd..3282e3024d0b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d56641c7723c92487fb4bbcd995ad74169e2329b +refs/heads/master: 424eb391596a38ddf422bee1617e4b9dea60126f diff --git a/trunk/drivers/pci/msi.c b/trunk/drivers/pci/msi.c index 337e16ab4a92..82de95ec2ea0 100644 --- a/trunk/drivers/pci/msi.c +++ b/trunk/drivers/pci/msi.c @@ -323,8 +323,18 @@ static void free_msi_irqs(struct pci_dev *dev) if (list_is_last(&entry->list, &dev->msi_list)) 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); kfree(entry); }