From 9dc99c7bd4d1723cfeb66d9bdd8f35e2795d5126 Mon Sep 17 00:00:00 2001 From: Benjamin Krill Date: Tue, 25 Aug 2009 15:52:41 +0200 Subject: [PATCH] --- yaml --- r: 165481 b: refs/heads/master c: ebd5a74db74ee2db833d43ea35108a4be9cab42f h: refs/heads/master i: 165479: e4021742edc43ebb09ea7d3bb4e96aeff78b4474 v: v3 --- [refs] | 2 +- trunk/drivers/mtd/ofpart.c | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index bfc7725ec9fd..2c70b288ab05 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9289d4ef065a6c62db6bf13d624307f61e57dbbb +refs/heads/master: ebd5a74db74ee2db833d43ea35108a4be9cab42f diff --git a/trunk/drivers/mtd/ofpart.c b/trunk/drivers/mtd/ofpart.c index 3e164f0c9295..62d6a78c4eee 100644 --- a/trunk/drivers/mtd/ofpart.c +++ b/trunk/drivers/mtd/ofpart.c @@ -46,21 +46,12 @@ int __devinit of_mtd_parse_partitions(struct device *dev, const u32 *reg; int len; - /* check if this is a partition node */ - partname = of_get_property(pp, "name", &len); - if (strcmp(partname, "partition") != 0) { + reg = of_get_property(pp, "reg", &len); + if (!reg) { nr_parts--; continue; } - reg = of_get_property(pp, "reg", &len); - if (!reg || (len != 2 * sizeof(u32))) { - of_node_put(pp); - dev_err(dev, "Invalid 'reg' on %s\n", node->full_name); - kfree(*pparts); - *pparts = NULL; - return -EINVAL; - } (*pparts)[i].offset = reg[0]; (*pparts)[i].size = reg[1]; @@ -75,6 +66,14 @@ int __devinit of_mtd_parse_partitions(struct device *dev, i++; } + if (!i) { + of_node_put(pp); + dev_err(dev, "No valid partition found on %s\n", node->full_name); + kfree(*pparts); + *pparts = NULL; + return -EINVAL; + } + return nr_parts; } EXPORT_SYMBOL(of_mtd_parse_partitions);