Before trying to kobject_init_and_add(), we add a reference to pdev via pci_dev_get(pdev). However, if it fails to init and/or add the kobject, we don't return it back - even on out_unroll. Fix this by adding pci_dev_put(pdev) before going to unrolling section. CC: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> CC: linux-pci@xxxxxxxxxxxxxxx CC: linux-kernel@xxxxxxxxxxxxxxx Signed-off-by: Veaceslav Falico <vfalico@xxxxxxxxxx> --- drivers/pci/msi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index d5f90d6..14bf578 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -534,8 +534,10 @@ static int populate_msi_sysfs(struct pci_dev *pdev) pci_dev_get(pdev); ret = kobject_init_and_add(kobj, &msi_irq_ktype, NULL, "%u", entry->irq); - if (ret) + if (ret) { + pci_dev_put(pdev); goto out_unroll; + } count++; } -- 1.8.4 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html