On Wed, 16 Dec 2020 at 16:16, Andy Shevchenko <andriy.shevche...@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... > > Actually it's not clear why realloc() has been used here. > If we shrink the array, the memcpy() overwrites it anyway > with the contents of a new array. If it becomes bigger, > same story. > > Drop useless realloc() for good and thus preserve console list > in case of failed allocation. > > Fixes: 16a28ef219c2 ("IOMUX: Add console multiplexing support.") > Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com> > --- > v2: no changes > common/iomux.c | 13 ++----------- > 1 file changed, 2 insertions(+), 11 deletions(-) > Reviewed-by: Simon Glass <s...@chromium.org> > diff --git a/common/iomux.c b/common/iomux.c > index 7cfd9f2e9162..cee5f266c86e 100644 > --- a/common/iomux.c > +++ b/common/iomux.c > @@ -129,19 +129,10 @@ int iomux_doenv(const int console, const char *arg) > return 1; > } else { > /* Works even if console_devices[console] is NULL. */ > - console_devices[console] = > - (struct stdio_dev **)realloc(console_devices[console], > - cs_idx * sizeof(struct stdio_dev *)); > - if (console_devices[console] == NULL) { > - free(cons_set); > - return 1; > - } > - memcpy(console_devices[console], cons_set, cs_idx * > - sizeof(struct stdio_dev *)); > - > + free(console_devices[console]); > + console_devices[console] = cons_set; > cd_count[console] = cs_idx; > } > - free(cons_set); > return 0; > } > #endif /* CONSOLE_MUX */ > -- > 2.29.2 >