[openwrt/openwrt] base-files: safer sysupgrade.tar for kernel-out-of-UBI

LEDE Commits lede-commits at lists.infradead.org
Tue Apr 19 09:08:24 PDT 2022


dangole pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/ecbcc0b595516d059092b89efbef69b93cf97f6a

commit ecbcc0b595516d059092b89efbef69b93cf97f6a
Author: Rodrigo Balerdi <lanchon at gmail.com>
AuthorDate: Fri Apr 15 03:24:58 2022 -0300

    base-files: safer sysupgrade.tar for kernel-out-of-UBI
    
    Ensure that the kernel CRC is invalidated while rootfs is being updated.
    This allows the bootloader to detect an interrupted sysupgrade and fall
    back to an alternate booting method, such as TFTP, instead of just going
    ahead with normal boot and effectively bricking the device.
    
    Signed-off-by: Rodrigo Balerdi <lanchon at gmail.com>
---
 package/base-files/files/lib/upgrade/nand.sh | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/package/base-files/files/lib/upgrade/nand.sh b/package/base-files/files/lib/upgrade/nand.sh
index f927c066da..a93c9acccd 100644
--- a/package/base-files/files/lib/upgrade/nand.sh
+++ b/package/base-files/files/lib/upgrade/nand.sh
@@ -303,7 +303,7 @@ nand_upgrade_tar() {
 	local has_env=0
 
 	[ "$kernel_length" != 0 -a -n "$kernel_mtd" ] && {
-		tar xf "$tar_file" ${board_dir}/kernel -O | mtd write - $CI_KERNPART
+		mtd erase $CI_KERNPART
 	}
 	[ "$kernel_length" = 0 -o ! -z "$kernel_mtd" ] && has_kernel=
 	[ "$CI_KERNPART" = "none" ] && has_kernel=
@@ -317,6 +317,10 @@ nand_upgrade_tar() {
 			ubiupdatevol /dev/$root_ubivol -s $rootfs_length -
 	}
 
+	[ "$kernel_length" != 0 -a -n "$kernel_mtd" ] && {
+		tar xf "$tar_file" ${board_dir}/kernel -O | \
+			mtd -n write - $CI_KERNPART
+	}
 	[ "$has_kernel" = "1" ] && {
 		local kern_ubivol="$( nand_find_volume $ubidev $CI_KERNPART )"
 		tar xf "$tar_file" ${board_dir}/kernel -O | \




More information about the lede-commits mailing list