[PATCH v5 7/9] cmd: rng: Use a statically allocated array for random bytes
Sughosh Ganu
sughosh.ganu at linaro.org
Thu Mar 24 17:19:12 CET 2022
hi Heinrich,
On Sun, 13 Mar 2022 at 20:19, Sughosh Ganu <sughosh.ganu at linaro.org> 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.ganu at linaro.org>
> ---
>
> Changes since V4:
>
> * New patch based on review comments from Simon to not use the malloc
> call
>
> cmd/rng.c | 17 +++++++----------
> 1 file changed, 7 insertions(+), 10 deletions(-)
Can you please pick this up, as this has been reviewed and is not
related to the TPM RNG changes which are still under discussion.
Thanks.
-sughosh
>
> 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
>
More information about the U-Boot
mailing list