On Sun, May 31, 2026 at 09:52:52PM +0200, Alexander A. Klimov wrote: > Don't just overwrite the original pointer passed to krealloc() > with its return value without checking latter: > > MEM = krealloc(MEM, SZ, GFP); > > If krealloc() returns NULL, that erases the pointer > to the still allocated memory, hence leaks this memory. > Instead, use a temporary variable, check it's not NULL > and only then assign it to the original pointer: > > TMP = krealloc(MEM, SZ, GFP); > if (!TMP) return; > MEM = TMP; > > Fixes: 888ca40e2843 ("clk: tegra: emc: Support multiple RAM codes") > Signed-off-by: Alexander A. Klimov > --- > v2: Separate variable declaration/init > v2: While on it, enhance variable name > v2: While on it, explicit variable type > v2: While on it, re-order variables (reverse Xmas tree) > > [✓] scripts/checkpatch.pl --strict > [✓] allmodconfig compiled (i686, LLVM) > [✓] localyesconfig booted (IBM T43) The latter two are a bit pointless because they are not going to hit this because the driver depends on ARCH_TEGRA which doesn't exist on i686 allmodconfig and booting this on a T43 isn't going to hit this either. > Note to myself: use --in-reply-to=ahilgKKwkttOd9H6@orome It's not generally useful to send as replies to earlier versions. Just regular sending is good enough. We have tools to track versions and such. > > drivers/clk/tegra/clk-tegra124-emc.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/clk/tegra/clk-tegra124-emc.c b/drivers/clk/tegra/clk-tegra124-emc.c > index f3b2c96fdcfc..81e4c02a807c 100644 > --- a/drivers/clk/tegra/clk-tegra124-emc.c > +++ b/drivers/clk/tegra/clk-tegra124-emc.c > @@ -445,15 +445,17 @@ static int load_timings_from_dt(struct tegra_clk_emc *tegra, > { > struct emc_timing *timings_ptr; > int child_count = of_get_child_count(node); > + struct emc_timing *timings; I guess we could've reused timings_ptr. Or remove timings_ptr and use the new one, but I guess this is fine, too: Reviewed-by: Thierry Reding > int i = 0, err; > size_t size; > > size = (tegra->num_timings + child_count) * sizeof(struct emc_timing); > > - tegra->timings = krealloc(tegra->timings, size, GFP_KERNEL); > - if (!tegra->timings) > + timings = krealloc(tegra->timings, size, GFP_KERNEL); > + if (!timings) > return -ENOMEM; > > + tegra->timings = timings; > timings_ptr = tegra->timings + tegra->num_timings; > tegra->num_timings += child_count;