On Mon, Jul 04, 2022 at 07:04:42PM +0530, Sughosh Ganu wrote:
> 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.g...@linaro.org>
> ---
> Changes since V5: None
> 
>  cmd/rng.c | 17 +++++++----------
>  1 file changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/cmd/rng.c b/cmd/rng.c
> index 2ddf27545f..81a23964b8 100644
> --- 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(
> -- 
> 2.25.1
> 

Reviewed-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>

Reply via email to