mtd: afs: refactor v1 partition parsing
Linux-MTD Mailing List
linux-mtd at lists.infradead.org
Tue Jan 12 15:59:02 PST 2016
Gitweb: http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=d2fd05bb6769d53ab98a11b080b3fb889276049d
Commit: d2fd05bb6769d53ab98a11b080b3fb889276049d
Parent: 9498440fff21649cabe529f1d9d4e3bc668fc125
Author: Linus Walleij <linus.walleij at linaro.org>
AuthorDate: Thu Oct 15 15:08:47 2015 +0200
Committer: Brian Norris <computersforpeace at gmail.com>
CommitDate: Tue Nov 10 17:56:06 2015 -0800
mtd: afs: refactor v1 partition parsing
Return immediately if we are not finding a valid v1 partition
in afs_read_footer_v1(), invert scanning logic so we continue
to read image information on v1 if we found a footer. This is
needed for the logic we introduce to parse v2 footers.
Cc: Ryan Harkin <ryan.harkin at linaro.org>
Cc: Liviu Dudau <liviu.dudau at arm.com>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
Signed-off-by: Brian Norris <computersforpeace at gmail.com>
---
drivers/mtd/afs.c | 37 +++++++++++++++++--------------------
1 file changed, 17 insertions(+), 20 deletions(-)
diff --git a/drivers/mtd/afs.c b/drivers/mtd/afs.c
index d09280a..a1eea50 100644
--- a/drivers/mtd/afs.c
+++ b/drivers/mtd/afs.c
@@ -87,25 +87,23 @@ afs_read_footer_v1(struct mtd_info *mtd, u_int *img_start, u_int *iis_start,
return ret;
}
- ret = 1;
-
/*
* Does it contain the magic number?
*/
if (fs.signature != AFSV1_FOOTER_MAGIC)
- ret = 0;
+ return 0;
/*
* Check the checksum.
*/
if (word_sum(&fs, sizeof(fs) / sizeof(u32)) != 0xffffffff)
- ret = 0;
+ return 0;
/*
* Don't touch the SIB.
*/
if (fs.type == 2)
- ret = 0;
+ return 0;
*iis_start = fs.image_info_base & mask;
*img_start = fs.image_start & mask;
@@ -115,16 +113,16 @@ afs_read_footer_v1(struct mtd_info *mtd, u_int *img_start, u_int *iis_start,
* be located after the footer structure.
*/
if (*iis_start >= ptr)
- ret = 0;
+ return 0;
/*
* Check the start of this image. The image
* data can not be located after this block.
*/
if (*img_start > off)
- ret = 0;
+ return 0;
- return ret;
+ return 1;
}
static int
@@ -190,18 +188,17 @@ static int parse_afs_partitions(struct mtd_info *mtd,
ret = afs_read_footer_v1(mtd, &img_ptr, &iis_ptr, off, mask);
if (ret < 0)
break;
- if (ret == 0)
- continue;
-
- ret = afs_read_iis_v1(mtd, &iis, iis_ptr);
- if (ret < 0)
- break;
- if (ret == 0)
- continue;
-
- sz += sizeof(struct mtd_partition);
- sz += strlen(iis.name) + 1;
- idx += 1;
+ if (ret) {
+ ret = afs_read_iis_v1(mtd, &iis, iis_ptr);
+ if (ret < 0)
+ break;
+ if (ret == 0)
+ continue;
+
+ sz += sizeof(struct mtd_partition);
+ sz += strlen(iis.name) + 1;
+ idx += 1;
+ }
}
if (!sz)
More information about the linux-mtd-cvs
mailing list