diff options
author | Tyrel Datwyler <tyreld@linux.vnet.ibm.com> | 2019-03-22 19:27:22 +0100 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2019-04-10 23:07:12 +0200 |
commit | 91800660bbe9d4ae7791f0e646e5736180f01fc0 (patch) | |
tree | c23070bd2763b4994b881eb641f5273f649f7802 /drivers/pci | |
parent | PCI: rpadlpar: Fix leaked device_node references in add/remove paths (diff) | |
download | linux-91800660bbe9d4ae7791f0e646e5736180f01fc0.tar.xz linux-91800660bbe9d4ae7791f0e646e5736180f01fc0.zip |
PCI: rpaphp: Get/put device node reference during slot alloc/dealloc
When allocating the slot structure we store a pointer to the associated
device_node. We really should be incrementing the reference count, so add
an of_node_get() during slot alloc and an of_node_put() during slot
dealloc.
Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/hotplug/rpaphp_slot.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/pci/hotplug/rpaphp_slot.c b/drivers/pci/hotplug/rpaphp_slot.c index 5282aa3e33c5..93b4a945c55d 100644 --- a/drivers/pci/hotplug/rpaphp_slot.c +++ b/drivers/pci/hotplug/rpaphp_slot.c @@ -21,6 +21,7 @@ /* free up the memory used by a slot */ void dealloc_slot_struct(struct slot *slot) { + of_node_put(slot->dn); kfree(slot->name); kfree(slot); } @@ -36,7 +37,7 @@ struct slot *alloc_slot_struct(struct device_node *dn, slot->name = kstrdup(drc_name, GFP_KERNEL); if (!slot->name) goto error_slot; - slot->dn = dn; + slot->dn = of_node_get(dn); slot->index = drc_index; slot->power_domain = power_domain; slot->hotplug_slot.ops = &rpaphp_hotplug_slot_ops; |