linux/drivers/pci/hotplug
Julia Lawall 0b3e7388e3 PCI: introduce missing kfree
Error handling code following a kmalloc should free the allocated data.
Since the subsequent code that could provoke an error does not use the
allocated data, the allocation is just moved below it.

The semantic match that finds the problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@r exists@
local idexpression x;
statement S;
expression E;
identifier f,l;
position p1,p2;
expression *ptr != NULL;
@@

(
if ((x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...)) == NULL) S
|
x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
...
if (x == NULL) S
)
<... when != x
     when != if (...) { <+...x...+> }
x->f = E
...>
(
 return \(0\|<+...x...+>\|ptr\);
|
 return@p2 ...;
)

@script:python@
p1 << r.p1;
p2 << r.p2;
@@

print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Reviewed-by: Matthew Wilcox <willy@linux.intel.com>
Reviewed-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2009-03-19 19:29:28 -07:00
..
acpi_pcihp.c Merge branch 'linus' into release 2009-01-09 03:39:43 -05:00
acpiphp_core.c PCI hotplug: acpiphp wants a 64-bit _SUN 2008-12-16 13:26:46 -08:00
acpiphp_glue.c ACPI PCI hotplug: harden against panic regression 2009-01-16 15:20:00 -05:00
acpiphp_ibm.c PCI: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-07 11:12:23 -08:00
acpiphp.h PCI hotplug: acpiphp whitespace cleanup 2009-01-07 11:12:42 -08:00
cpci_hotplug_core.c PCI: cpci_hotplug: stop managing hotplug_slot->name 2008-10-22 16:42:39 -07:00
cpci_hotplug_pci.c PCI: cpci_hotplug: stop managing hotplug_slot->name 2008-10-22 16:42:39 -07:00
cpci_hotplug.h PCI: cpci_hotplug: stop managing hotplug_slot->name 2008-10-22 16:42:39 -07:00
cpcihp_generic.c PCI Hotplug: make cpcihp driver use modern apis 2008-04-20 21:46:56 -07:00
cpcihp_zt5550.c PCI: ZT5550 CPCI Hotplug driver fix 2007-05-02 19:02:40 -07:00
cpcihp_zt5550.h
cpqphp_core.c x86, pci: move arch/x86/pci/pci.h to arch/x86/include/asm/pci_x86.h 2008-12-29 18:17:36 +01:00
cpqphp_ctrl.c PCI hotplug: remove redundant test in cpq hotplug 2009-01-07 11:13:22 -08:00
cpqphp_nvram.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
cpqphp_nvram.h
cpqphp_pci.c PCI hotplug: cpqphp: use config space PCI interrupt pin encoding 2009-01-07 11:12:47 -08:00
cpqphp_sysfs.c PCI: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-19 19:29:24 -07:00
cpqphp.h PCI: cpqphp: stop managing hotplug_slot->name 2008-10-22 16:42:40 -07:00
fakephp.c PCI hotplug: fakephp: Allocate PCI resources before adding the device 2009-01-27 10:53:24 -08:00
ibmphp_core.c x86, pci: move arch/x86/pci/pci.h to arch/x86/include/asm/pci_x86.h 2008-12-29 18:17:36 +01:00
ibmphp_ebda.c PCI: ibmphp: stop managing hotplug_slot->name 2008-10-22 16:42:41 -07:00
ibmphp_hpc.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
ibmphp_pci.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
ibmphp_res.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
ibmphp.h PCI: ibmphp: stop managing hotplug_slot->name 2008-10-22 16:42:41 -07:00
Kconfig powerpc/pseries: The RPA PCI hotplug driver depends on EEH 2009-03-12 15:10:02 -04:00
Makefile PCI hotplug: Change link order of pciehp & acpiphp 2009-01-27 15:35:51 -08:00
pci_hotplug_core.c PCI: Hotplug core: remove 'name' 2008-10-22 16:42:43 -07:00
pciehp_acpi.c PCI: introduce missing kfree 2009-03-19 19:29:28 -07:00
pciehp_core.c PCI: PCIe portdrv: Remove struct pcie_port_service_id 2009-03-19 19:29:23 -07:00
pciehp_ctrl.c PCI hotplug: pciehp: remove unnecessary wait after turning power off 2009-01-07 11:12:21 -08:00
pciehp_hpc.c PCI: pciehp: Handle interrupts that happen during initialization. 2009-02-24 09:36:56 -08:00
pciehp_pci.c PCI hotplug: pciehp: message refinement 2008-10-23 14:47:39 -07:00
pciehp.h PCI: add missing KERN_* constants to printks 2009-03-19 19:29:27 -07:00
pcihp_skeleton.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
rpadlpar_core.c powerpc/pci: Fix various pseries PCI hotplug issues 2008-11-06 09:31:52 +11:00
rpadlpar_sysfs.c PCI: introduce pci_slot 2008-06-10 14:37:03 -07:00
rpadlpar.h
rpaphp_core.c PCI hotplug: rpaphp: make debug var unique 2008-10-20 10:54:27 -07:00
rpaphp_pci.c PCI hotplug: rpaphp: make debug var unique 2008-10-20 10:54:27 -07:00
rpaphp_slot.c PCI: rpaphp: kmalloc/kfree slot->name directly 2008-10-22 16:42:42 -07:00
rpaphp.h PCI hotplug: rpaphp: make debug var unique 2008-10-20 10:54:27 -07:00
sgi_hotplug.c Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2008-10-23 10:20:36 -07:00
shpchp_core.c PCI hotplug: shpchp: message refinement 2008-10-23 16:14:00 -07:00
shpchp_ctrl.c PCI hotplug: shpchp: message refinement 2008-10-23 16:14:00 -07:00
shpchp_hpc.c PCI hotplug: shpchp: message refinement 2008-10-23 16:14:00 -07:00
shpchp_pci.c PCI hotplug: shpchp: message refinement 2008-10-23 16:14:00 -07:00
shpchp_sysfs.c SHPCHP: fix __must_check warnings 2006-09-26 17:43:53 -07:00
shpchp.h PCI: add missing KERN_* constants to printks 2009-03-19 19:29:27 -07:00