package/mtd: add upstream patch that fixes ubiformat return code
authorThomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Tue, 7 Apr 2020 09:58:15 +0000 (11:58 +0200)
committerYann E. MORIN <yann.morin.1998@free.fr>
Tue, 7 Apr 2020 13:42:18 +0000 (15:42 +0200)
ubiformat returns 255 even on successful format actions, since the upgrade
of mtd-utils to version 2.1.1.

Backport an upstream patch that fixes this issue. No new release is made
yet.

Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
[yann.morin.1998@free.fr: make it explicit it's a backported patch]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
package/mtd/0001-mtd-utils-Fix-return-value-of-ubiformat.patch [new file with mode: 0644]

diff --git a/package/mtd/0001-mtd-utils-Fix-return-value-of-ubiformat.patch b/package/mtd/0001-mtd-utils-Fix-return-value-of-ubiformat.patch
new file mode 100644 (file)
index 0000000..88c8389
--- /dev/null
@@ -0,0 +1,60 @@
+From 95633c4dfe943a701d4fcd809e6cabf4bf8710b8 Mon Sep 17 00:00:00 2001
+From: Barry Grussling <barry@grussling.com>
+Date: Sun, 12 Jan 2020 12:33:32 -0800
+Subject: [PATCH] mtd-utils: Fix return value of ubiformat
+
+This changeset fixes a feature regression in ubiformat.  Older versions of
+ubiformat, when invoked with a flash-image, would return 0 in the case no error
+was encountered.  Upon upgrading to latest, it was discovered that ubiformat
+returned 255 even without encountering an error condition.
+
+This changeset corrects the above issue and causes ubiformat, when given an
+image file, to return 0 when no errors are detected.
+
+Tested by running through my loading scripts and verifying ubiformat returned
+0.
+
+Signed-off-by: Barry Grussling <barry@grussling.com>
+Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
+Backported-from: 95633c4dfe943a701d4fcd809e6cabf4bf8710b8
+Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
+---
+ ubi-utils/ubiformat.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/ubi-utils/ubiformat.c b/ubi-utils/ubiformat.c
+index 64afad2..be40e52 100644
+--- a/ubi-utils/ubiformat.c
++++ b/ubi-utils/ubiformat.c
+@@ -550,6 +550,7 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd,
+       struct ubi_vtbl_record *vtbl;
+       int eb1 = -1, eb2 = -1;
+       long long ec1 = -1, ec2 = -1;
++      int ret = -1;
+       write_size = UBI_EC_HDR_SIZE + mtd->subpage_size - 1;
+       write_size /= mtd->subpage_size;
+@@ -643,8 +644,10 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd,
+       if (!args.quiet && !args.verbose)
+               printf("\n");
+-      if (novtbl)
++      if (novtbl) {
++              ret = 0;
+               goto out_free;
++      }
+       if (eb1 == -1 || eb2 == -1) {
+               errmsg("no eraseblocks for volume table");
+@@ -669,7 +672,7 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd,
+ out_free:
+       free(hdr);
+-      return -1;
++      return ret;
+ }
+ int main(int argc, char * const argv[])
+-- 
+2.24.1
+