mxs_nand: Update compatible string for i.MX6SX
[oweals/u-boot.git] / common / autoboot.c
index 42fbd7614a8126d92a35325c8fbbd0bb3be18786..4ea9be6da9e626a91063c483742607d67a84518c 100644 (file)
@@ -8,11 +8,16 @@
 #include <autoboot.h>
 #include <bootretry.h>
 #include <cli.h>
+#include <command.h>
 #include <console.h>
+#include <env.h>
 #include <fdtdec.h>
 #include <hash.h>
+#include <malloc.h>
+#include <memalign.h>
 #include <menu.h>
 #include <post.h>
+#include <time.h>
 #include <u-boot/sha256.h>
 #include <bootcount.h>
 
@@ -71,8 +76,8 @@ static int passwd_abort_sha256(uint64_t etime)
 {
        const char *sha_env_str = env_get("bootstopkeysha256");
        u8 sha_env[SHA256_SUM_LEN];
-       u8 sha[SHA256_SUM_LEN];
-       char presskey[MAX_DELAY_STOP_STR];
+       u8 *sha;
+       char *presskey;
        const char *algo_name = "sha256";
        u_int presskey_len = 0;
        int abort = 0;
@@ -93,6 +98,9 @@ static int passwd_abort_sha256(uint64_t etime)
                return 0;
        }
 
+       presskey = malloc_cache_aligned(MAX_DELAY_STOP_STR);
+       sha = malloc_cache_aligned(SHA256_SUM_LEN);
+       size = SHA256_SUM_LEN;
        /*
         * We don't know how long the stop-string is, so we need to
         * generate the sha256 hash upon each input character and
@@ -101,8 +109,11 @@ static int passwd_abort_sha256(uint64_t etime)
        do {
                if (tstc()) {
                        /* Check for input string overflow */
-                       if (presskey_len >= MAX_DELAY_STOP_STR)
+                       if (presskey_len >= MAX_DELAY_STOP_STR) {
+                               free(presskey);
+                               free(sha);
                                return 0;
+                       }
 
                        presskey[presskey_len++] = getc();
 
@@ -116,6 +127,8 @@ static int passwd_abort_sha256(uint64_t etime)
                }
        } while (!abort && get_ticks() <= etime);
 
+       free(presskey);
+       free(sha);
        return abort;
 }