MTD: small physmap_of partition parsing fixes
PATCH 1/1 MTD: small physmap_of partition parsing fixes
Use of_get_next_child for proper ref counting as suggested by Stephen Rothwell and remove add_mtd_partitions from parse_partitions to avoid duplicate mtd device registration for RedBoot partitions.
Signed-off-by Valentine Barshak <[email protected]>
--- drivers/mtd/maps/physmap_of.c | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-)
drivers/mtd/maps/physmap_of.c +7 -6
@@ -94,14 +94,13 @@ static int __devinit parse_partitions(st* line, these take precedence over device tree information */ nr_parts =parse_mtd_partitions (info->mtd, part_probe_types, &info->parts,0 ); -if (nr_parts >0 ) { -add_mtd_partitions (info->mtd, info->parts, nr_parts); -return 0 ; - } +if (nr_parts >0 ) +return nr_parts;/* First count the subnodes */ nr_parts =0 ; -for (pp = dp->child; pp; pp = pp->sibling) +for (pp =of_get_next_child (dp,NULL ); pp; + pp =of_get_next_child (dp, pp)) nr_parts++;if (nr_parts ==0 )
@@ -112,12 +111,14 @@ static int __devinit parse_partitions(stif (!info->parts)return -ENOMEM ; -for (pp = dp->child, i =0 ; pp; pp = pp->sibling, i++) { +for (pp =of_get_next_child (dp,NULL ), i =0 ; pp; + pp =of_get_next_child (dp, pp), i++) {const u32 *reg;int len; reg =of_get_property (pp,"reg" , &len);if (!reg || (len !=2 *sizeof (u32))) { +of_node_put (pp);dev_err (&dev->dev,"Invalid 'reg' on %s\n" , dp->full_name);kfree (info->parts);
Quoted 5 lines · Valentine Barshak
Use
of_get_next_childfor proper ref counting as suggested by Stephen Rothwell and removeadd_mtd_partitionsfromparse_partitionsto avoid duplicate mtd device registration for RedBoot partitions.Signed-off-by Valentine Barshak <[email protected]>
Oops, yes. I think the extra add_mtd_partitions() was left over from an earlier version which always did the add_mtd_partitions() from within the probe function.
Acked-by David Gibson <[email protected]>
Signature · 4 lines
David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson