base-files: safer sysupgrade.tar for kernel-out-of-UBI
[openwrt/staging/chunkeey.git] / package / base-files / files / lib / upgrade / nand.sh
index f927c066dab769230c4d3ca655dca2d01e1d8a34..a93c9acccdb0c8fee6e57b6268ea111adbfd97ce 100644 (file)
@@ -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 | \