linux/drivers/mtd/nand/brcmnand
Julia Lawall 081976bcc0 mtd: brcmnand: improve memory management
This patch addresses two related memory management issues in the probe
function:

1. for_each_available_child_of_node performs an of_node_get on each
iteration, so a break out of the loop requires an of_node_put.

A simplified version of the semantic patch that fixes this problem is as
follows (http://coccinelle.lip6.fr):

// <smpl>
@@
expression root,e;
local idexpression child;
@@

 for_each_available_child_of_node(root, child) {
   ... when != of_node_put(child)
       when != e = child
(
   return child;
|
+  of_node_put(child);
?  return ...;
)
   ...
 }
// </smpl>

2. The devm_kzalloc'd data is not used if brcmnand_init_cs fails.  Free it
immediately, using devm_kfree in this case, instead of waiting for the
remove function.

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
2015-11-30 17:54:05 -08:00
..
bcm63138_nand.c mtd: brcmnand: refactor bcm63138 SoC layering 2015-09-30 13:07:01 -07:00
brcmnand.c mtd: brcmnand: improve memory management 2015-11-30 17:54:05 -08:00
brcmnand.h mtd: brcmnand: remove unnecessary fields from brcmnand_soc 2015-09-30 13:07:02 -07:00
brcmstb_nand.c
iproc_nand.c mtd: brcmnand: refactor iProc SoC layering 2015-09-30 13:07:02 -07:00
Makefile mtd: brcmnand: add BCM63138 support 2015-05-15 13:20:00 -07:00