distro: not taint environment variables if possible
authorAKASHI Takahiro <takahiro.akashi@linaro.org>
Tue, 4 Dec 2018 06:46:55 +0000 (15:46 +0900)
committerAlexander Graf <agraf@suse.de>
Wed, 13 Feb 2019 08:40:05 +0000 (09:40 +0100)
The aim of this patch is not to have temporary variables used in
distro_bootcmd left as environment variables after run something.
See the discussion[1].
Without this patch, saveenv command also saves those variables, too.
While they are apparently safe, scsi_need_init can be harmful.

Please note that, in most cases, a variable should be converted to
hush's local variable, while "devplist" cannot because it is created
by "part" command as an environment variable.

[1] https://lists.denx.de/pipermail/u-boot/2018-December/350209.html

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
include/config_distro_bootcmd.h

index fa0e017..4993303 100644 (file)
@@ -27,7 +27,7 @@
 
 #define BOOTENV_SHARED_BLKDEV_BODY(devtypel) \
                "if " #devtypel " dev ${devnum}; then " \
-                       "setenv devtype " #devtypel "; " \
+                       "devtype=" #devtypel "; " \
                        "run scan_dev_for_boot_part; " \
                "fi\0"
 
@@ -37,7 +37,7 @@
 
 #define BOOTENV_DEV_BLKDEV(devtypeu, devtypel, instance) \
        "bootcmd_" #devtypel #instance "=" \
-               "setenv devnum " #instance "; " \
+               "devnum=" #instance "; " \
                "run " #devtypel "_boot\0"
 
 #define BOOTENV_DEV_NAME_BLKDEV(devtypeu, devtypel, instance) \
@@ -77,7 +77,7 @@
                "if ubi part ${bootubipart} && " \
                        "ubifsmount ubi${devnum}:${bootubivol}; " \
                "then " \
-                       "setenv devtype ubi; " \
+                       "devtype=ubi; " \
                        "run scan_dev_for_boot; " \
                "fi\0"
 #define BOOTENV_DEV_UBIFS      BOOTENV_DEV_BLKDEV
 
 #ifdef CONFIG_SCSI
 #define BOOTENV_RUN_SCSI_INIT "run scsi_init; "
-#define BOOTENV_SET_SCSI_NEED_INIT "setenv scsi_need_init; "
+#define BOOTENV_SET_SCSI_NEED_INIT "scsi_need_init=; "
 #define BOOTENV_SHARED_SCSI \
        "scsi_init=" \
                "if ${scsi_need_init}; then " \
-                       "setenv scsi_need_init false; " \
+                       "scsi_need_init=false; " \
                        "scsi scan; " \
                "fi\0" \
        \
                                        "bootfstype; then "               \
                                "run scan_dev_for_boot; "                 \
                        "fi; "                                            \
-               "done\0"                                                  \
+               "done; "                                                  \
+               "setenv devplist\0"                                       \
        \
        BOOT_TARGET_DEVICES(BOOTENV_DEV)                                  \
        \