Andrew Geissler | d25ed32 | 2020-06-27 00:28:28 -0500 | [diff] [blame] | 1 | From 4d19bffcfd66e25d3ee74536ae2d2da7ad52e8e2 Mon Sep 17 00:00:00 2001 |
| 2 | From: Barry Grussling <barry@grussling.com> |
| 3 | Date: Sun, 12 Jan 2020 12:33:32 -0800 |
| 4 | Subject: [PATCH] mtd-utils: Fix return value of ubiformat |
| 5 | Organization: O.S. Systems Software LTDA. |
| 6 | |
| 7 | This changeset fixes a feature regression in ubiformat. Older versions of |
| 8 | ubiformat, when invoked with a flash-image, would return 0 in the case no error |
| 9 | was encountered. Upon upgrading to latest, it was discovered that ubiformat |
| 10 | returned 255 even without encountering an error condition. |
| 11 | |
| 12 | This changeset corrects the above issue and causes ubiformat, when given an |
| 13 | image file, to return 0 when no errors are detected. |
| 14 | |
| 15 | Tested by running through my loading scripts and verifying ubiformat returned |
| 16 | 0. |
| 17 | |
| 18 | Upstream-Status: Backport [2.1.2] |
| 19 | |
| 20 | Signed-off-by: Barry Grussling <barry@grussling.com> |
| 21 | Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at> |
| 22 | Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> |
| 23 | --- |
| 24 | ubi-utils/ubiformat.c | 7 +++++-- |
| 25 | 1 file changed, 5 insertions(+), 2 deletions(-) |
| 26 | |
| 27 | diff --git a/ubi-utils/ubiformat.c b/ubi-utils/ubiformat.c |
| 28 | index a90627c..5377b12 100644 |
| 29 | --- a/ubi-utils/ubiformat.c |
| 30 | +++ b/ubi-utils/ubiformat.c |
| 31 | @@ -550,6 +550,7 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd, |
| 32 | struct ubi_vtbl_record *vtbl; |
| 33 | int eb1 = -1, eb2 = -1; |
| 34 | long long ec1 = -1, ec2 = -1; |
| 35 | + int ret = -1; |
| 36 | |
| 37 | write_size = UBI_EC_HDR_SIZE + mtd->subpage_size - 1; |
| 38 | write_size /= mtd->subpage_size; |
| 39 | @@ -643,8 +644,10 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd, |
| 40 | if (!args.quiet && !args.verbose) |
| 41 | printf("\n"); |
| 42 | |
| 43 | - if (novtbl) |
| 44 | + if (novtbl) { |
| 45 | + ret = 0; |
| 46 | goto out_free; |
| 47 | + } |
| 48 | |
| 49 | if (eb1 == -1 || eb2 == -1) { |
| 50 | errmsg("no eraseblocks for volume table"); |
| 51 | @@ -669,7 +672,7 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd, |
| 52 | |
| 53 | out_free: |
| 54 | free(hdr); |
| 55 | - return -1; |
| 56 | + return ret; |
| 57 | } |
| 58 | |
| 59 | int main(int argc, char * const argv[]) |
| 60 | -- |
| 61 | 2.27.0 |
| 62 | |