[PATCH v2 4/7] IOMUX: Preserve console list if realloc() fails
Simon Glass
sjg at chromium.org
Mon Dec 21 18:33:40 CET 2020
Hi Andy,
On Mon, 21 Dec 2020 at 10:16, Andy Shevchenko
<andriy.shevchenko at linux.intel.com> wrote:
>
> On Mon, Dec 21, 2020 at 09:47:03AM -0700, Simon Glass wrote:
> > On Mon, 21 Dec 2020 at 05:00, Andy Shevchenko
> > <andriy.shevchenko at linux.intel.com> wrote:
> > > On Fri, Dec 18, 2020 at 07:29:19PM -0700, Simon Glass wrote:
> > > > On Wed, 16 Dec 2020 at 16:16, Andy Shevchenko
> > > > <andriy.shevchenko at linux.intel.com> wrote:
> > > > >
> > > > > It's realloc() 101 to avoid `foo = realloc(foo, ...);` call
> > > > > due to getting a memory leak.
> > > >
> > > > Hmm I don't think I knew that...
> > >
> > > When you use the same variable for the source and destination in case of NULL
> > > the source gone.
> > >
> > > It's okay to have
> > >
> > > foo = bar;
> > > bar = realloc(bar, ...);
> > > if (bar == NULL)
> > > ...do something with foo if needed...
> >
> > Here is man malloc on this point:
> >
> > If ptr is NULL, then the call is equivalent to mal‐
> > loc(size), for all values of size; if size is equal to zero, and ptr is
> > not NULL, then the call is equivalent to free(ptr).
>
> But it's about another case.
> I'm talking about realloc() to fail.
>
> foo = realloc(foo, ...);
>
> will effectively leak memory if foo is not saved previously somewhere.
> And this is the case here.
>
> For instance [1] is telling about the same:
> "Of course if you will write
>
> p = realloc(p, 2 * sizeof(int));
>
> ... if the function was unable to reallocate memory. In this case a memory
> leak will occur provided that initial value of the pointer p was not equal
> to NULL."
>
> Really, it's 101 of realloc() usage.
Oh I missed that it failed...OK
>
> [1]: https://stackoverflow.com/questions/57498538/does-realloc-mutate-its-arguments
Regards,
Simon
More information about the U-Boot
mailing list