ipq40xx: fix openmesh sysupgrade with tar content out of order
authorMarek Lindner <mareklindner@neomailbox.ch>
Sun, 2 Dec 2018 14:02:04 +0000 (22:02 +0800)
committerMathias Kresin <dev@kresin.me>
Wed, 5 Dec 2018 08:09:38 +0000 (09:09 +0100)
The tar extraction depends on the order in which the files
are added to the tar file. Since the order is not guaranteed
and depends on the host system, the combined mtd write fails
with sysupgrade images built on some systems.
Fix by changing to tar file order independent mtd write.

Fixes: 86e18f6706e1 ("ipq806x: add support for OpenMesh A42")
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
target/linux/ipq40xx/base-files/lib/upgrade/openmesh.sh

index f7aed7c9b6452baeb5fb7de7ee6c0546e814ee1d..7cc60c00e9c14fa27404dff6beda33c6a5266996 100644 (file)
@@ -76,9 +76,9 @@ platform_do_upgrade_openmesh() {
        # take care of restoring a saved config
        [ "$SAVE_CONFIG" -eq 1 ] && restore_backup="${MTD_CONFIG_ARGS} -j ${CONF_TAR}"
 
-       # write concatinated kernel + rootfs to flash
-       tar xf $tar_file ${board_dir}/kernel ${board_dir}/root -O | \
-               mtd $restore_backup write - $PART_NAME
+       mtd -q erase inactive
+       tar xf $tar_file ${board_dir}/root -O | mtd -n -p $kernel_length $restore_backup write - $PART_NAME
+       tar xf $tar_file ${board_dir}/kernel -O | mtd -n write - $PART_NAME
 
        # prepare new u-boot env
        if [ "$next_boot_part" = "1" ]; then