Skip to content

Commit 915b961

Browse files
Julia Lawallglikely
Julia Lawall
authored andcommitted
powerpc/5200: efika.c: Add of_node_put to avoid memory leak
This function is implemented as though the function of_get_next_child does not increment the reference count of its result, but actually it does. Thus the patch adds of_node_put in error handling code and drops a call to of_node_get. The semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r exists@ local idexpression x; expression E1; position p1,p2; @@ x@p1 = of_get_next_child(...); ... when != x = E1 of_node_get@p2(x) @script:python@ p1 << r.p1; p2 << r.p2; @@ cocci.print_main("call",p1) cocci.print_secs("get",p2) // </smpl> Signed-off-by: Julia Lawall <[email protected]> Signed-off-by: Grant Likely <[email protected]>
1 parent 59482fe commit 915b961

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

arch/powerpc/platforms/52xx/efika.c

+6-3
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ static void __init efika_pcisetup(void)
9999
if (bus_range == NULL || len < 2 * sizeof(int)) {
100100
printk(KERN_WARNING EFIKA_PLATFORM_NAME
101101
": Can't get bus-range for %s\n", pcictrl->full_name);
102-
return;
102+
goto out_put;
103103
}
104104

105105
if (bus_range[1] == bus_range[0])
@@ -111,19 +111,22 @@ static void __init efika_pcisetup(void)
111111
printk(" controlled by %s\n", pcictrl->full_name);
112112
printk("\n");
113113

114-
hose = pcibios_alloc_controller(of_node_get(pcictrl));
114+
hose = pcibios_alloc_controller(pcictrl);
115115
if (!hose) {
116116
printk(KERN_WARNING EFIKA_PLATFORM_NAME
117117
": Can't allocate PCI controller structure for %s\n",
118118
pcictrl->full_name);
119-
return;
119+
goto out_put;
120120
}
121121

122122
hose->first_busno = bus_range[0];
123123
hose->last_busno = bus_range[1];
124124
hose->ops = &rtas_pci_ops;
125125

126126
pci_process_bridge_OF_ranges(hose, pcictrl, 0);
127+
return;
128+
out_put:
129+
of_node_put(pcictrl);
127130
}
128131

129132
#else

0 commit comments

Comments
 (0)