MTD ofpart: Check availability of reg property instead of name property
PATCH 1/1 MTD ofpart: Check availability of reg property instead of name property
The previous implementation breaks the dts binding "mtd-physmap.txt". This implementation fixes the issue by checking the availability of the reg property instead of the name property.
Signed-off-by Benjamin Krill <[email protected]>
--- drivers/mtd/ofpart.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-)
drivers/mtd/ofpart.c +10 -11
@@ -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);
Signature · 1 line
1.5.4.5
Quoted 8 lines · Benjamin Krill
The previous implementation breaks the dts binding "mtd-physmap.txt". This implementation fixes the issue by checking the availability of the reg property instead of the name property.
Signed-off-by Benjamin Krill <[email protected]>---
drivers/mtd/ofpart.c| 21 ++++++++++-----------1 files changed, 10 insertions(+), 11 deletions(-)
David,
Can you look at pushing this for .31 if possible. We have a # of device trees in the kernel which have "broken" functionality because of this.
- k