[PATCH v5 7/9] cmd: rng: Use a statically allocated array for random bytes

Simon Glass sjg at chromium.org
Mon Mar 14 19:24:44 CET 2022


Hi Sughosh,

On Mon, 14 Mar 2022 at 05:27, Sughosh Ganu <sughosh.ganu at linaro.org> wrote:
>
> hi Simon,
>
> On Mon, 14 Mar 2022 at 03:53, Simon Glass <sjg at chromium.org> wrote:
> >
> > Hi Sughosh,
> >
> > On Sun, 13 Mar 2022 at 08:49, 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(-)
> >
> > It might be easier to put this patch before the other one.
> >
> > >
> > > 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");
> >
> > This looks like a Windows-style error. How about adding "(err=%d)",
> > ret to this so we can see the error?
>
> Again, this is not being changed by my patch. This is existing code
> which is not being touched by the patch. These kinds of fixes should
> be taken up separately. Thanks.

Ah yes I keep missing that.

- Simon

[..]


More information about the U-Boot mailing list