diff options
author | Michael Ellerman <mpe@ellerman.id.au> | 2024-02-29 22:51:49 +1100 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2024-03-03 22:20:29 +1100 |
commit | f2d5bccaca3e8c09c9b9c8485375f7bdbb2631d2 (patch) | |
tree | 75a1ba6879f7fc58d957ac30ee07db88190d402e /arch/powerpc | |
parent | 69b0194ccec033c208b071e019032c1919c2822d (diff) | |
download | linux-stable-f2d5bccaca3e8c09c9b9c8485375f7bdbb2631d2.tar.gz linux-stable-f2d5bccaca3e8c09c9b9c8485375f7bdbb2631d2.tar.bz2 linux-stable-f2d5bccaca3e8c09c9b9c8485375f7bdbb2631d2.zip |
powerpc/boot: Only free if realloc() succeeds
simple_realloc() frees the original buffer (ptr) even if the
reallocation failed.
Fix it to behave like standard realloc() and only free the original
buffer if the reallocation succeeded.
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20240229115149.749264-1-mpe@ellerman.id.au
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/boot/simple_alloc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/powerpc/boot/simple_alloc.c b/arch/powerpc/boot/simple_alloc.c index db9aaa5face3..d07796fdf91a 100644 --- a/arch/powerpc/boot/simple_alloc.c +++ b/arch/powerpc/boot/simple_alloc.c @@ -112,10 +112,11 @@ static void *simple_realloc(void *ptr, unsigned long size) return ptr; new = simple_malloc(size); - if (new) + if (new) { memcpy(new, ptr, p->size); + simple_free(ptr); + } - simple_free(ptr); return new; } |