After commit 8a94644b440e ("PCI: Fix pci_create_slot() reference count leak"), kobject_put() is called instead of kfree() if kobject_init_and_add() fails. However, we still need to free the slot memory before overwriting it as ERR_PTR(err). This partially reverts the commit 8a94644b440e. Fixes: 8a94644b440e ("PCI: Fix pci_create_slot() reference count leak") Signed-off-by: Jubin Zhong <zhongjubin@xxxxxxxxxx> --- drivers/pci/slot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/slot.c b/drivers/pci/slot.c index 3861505..a4be62e 100644 --- a/drivers/pci/slot.c +++ b/drivers/pci/slot.c @@ -268,7 +268,6 @@ struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, slot_name = make_slot_name(name); if (!slot_name) { err = -ENOMEM; - kfree(slot); goto err; } @@ -296,6 +295,7 @@ struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, mutex_unlock(&pci_slot_mutex); return slot; err: + kfree(slot); slot = ERR_PTR(err); goto out; } -- 1.8.5.6