mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 05:48:40 +00:00
PCI: Hotplug: Fix leaks in IBM Hot Plug Controller Driver - ibmphp_init_devno()
In drivers/pci/hotplug/ibmphp_core.c::ibmphp_init_devno() we allocate space dynamically for a PCI irq routing table by calling pcibios_get_irq_routing_table(), but we never free the allocated space. This patch frees the allocated space at the function exit points. Spotted by the Coverity checker. Compile tested only. Please consider applying. Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
884525655d
commit
029c3c133b
1 changed files with 5 additions and 1 deletions
|
@ -148,8 +148,10 @@ int ibmphp_init_devno(struct slot **cur_slot)
|
|||
len = (rtable->size - sizeof(struct irq_routing_table)) /
|
||||
sizeof(struct irq_info);
|
||||
|
||||
if (!len)
|
||||
if (!len) {
|
||||
kfree(rtable);
|
||||
return -1;
|
||||
}
|
||||
for (loop = 0; loop < len; loop++) {
|
||||
if ((*cur_slot)->number == rtable->slots[loop].slot) {
|
||||
if ((*cur_slot)->bus == rtable->slots[loop].bus) {
|
||||
|
@ -187,11 +189,13 @@ int ibmphp_init_devno(struct slot **cur_slot)
|
|||
debug("rtable->slots[loop].irq[3].link = %x\n",
|
||||
rtable->slots[loop].irq[3].link);
|
||||
debug("end of init_devno\n");
|
||||
kfree(rtable);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
kfree(rtable);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue