From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Date: Mon, 21 Dec 2020 10:33:40 -0700 Subject: [PATCH v2 4/7] IOMUX: Preserve console list if realloc() fails In-Reply-To: <20201221171751.GT4077@smile.fi.intel.com> References: <20201216231624.9724-1-andriy.shevchenko@linux.intel.com> <20201216231624.9724-4-andriy.shevchenko@linux.intel.com> <20201221120130.GO4077@smile.fi.intel.com> <20201221171751.GT4077@smile.fi.intel.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Andy, On Mon, 21 Dec 2020 at 10:16, Andy Shevchenko wrote: > > On Mon, Dec 21, 2020 at 09:47:03AM -0700, Simon Glass wrote: > > On Mon, 21 Dec 2020 at 05:00, Andy Shevchenko > > wrote: > > > On Fri, Dec 18, 2020 at 07:29:19PM -0700, Simon Glass wrote: > > > > On Wed, 16 Dec 2020 at 16:16, Andy Shevchenko > > > > 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