cmd: rng: Use a statically allocated array for random bytes
authorSughosh Ganu <sughosh.ganu@linaro.org>
Fri, 22 Jul 2022 16:02:07 +0000 (21:32 +0530)
committerIlias Apalodimas <ilias.apalodimas@linaro.org>
Tue, 2 Aug 2022 20:50:02 +0000 (23:50 +0300)
Use a statically allocated buffer on stack instead of using malloc for
reading the random bytes. Using a local array is faster than
allocating heap memory on every initiation of the command.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
cmd/rng.c

index 2ddf275..81a2396 100644 (file)
--- a/cmd/rng.c
+++ b/cmd/rng.c
@@ -14,9 +14,9 @@
 static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
        size_t n;
-       struct udevice *dev;
-       void *buf;
+       u8 buf[64];
        int devnum;
+       struct udevice *dev;
        int ret = CMD_RET_SUCCESS;
 
        switch (argc) {
@@ -41,11 +41,10 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
                return CMD_RET_FAILURE;
        }
 
-       buf = malloc(n);
-       if (!buf) {
-               printf("Out of memory\n");
-               return CMD_RET_FAILURE;
-       }
+       if (!n)
+               return 0;
+
+       n = min(n, sizeof(buf));
 
        if (dm_rng_read(dev, buf, n)) {
                printf("Reading RNG failed\n");
@@ -54,15 +53,13 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
                print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, buf, n);
        }
 
-       free(buf);
-
        return ret;
 }
 
 #ifdef CONFIG_SYS_LONGHELP
 static char rng_help_text[] =
        "[dev [n]]\n"
-       "  - print n random bytes read from dev\n";
+       "  - print n random bytes(max 64) read from dev\n";
 #endif
 
 U_BOOT_CMD(