Message ID | 20220704133444.1110715-6-sughosh.ganu@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | tpm: rng: Move TPM RNG functionality to driver model | expand |
On Mon, 4 Jul 2022 at 07:35, Sughosh Ganu <sughosh.ganu@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@linaro.org> > --- > Changes since V5: None > > cmd/rng.c | 17 +++++++---------- > 1 file changed, 7 insertions(+), 10 deletions(-) > Reviewed-by: Simon Glass <sjg@chromium.org>
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.ganu@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.apalodimas@linaro.org>
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(
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> --- Changes since V5: None cmd/rng.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-)