diff mbox series

powerpc/boot: Only free if realloc() succeeds

Message ID 20240229115149.749264-1-mpe@ellerman.id.au (mailing list archive)
State Accepted
Commit f2d5bccaca3e8c09c9b9c8485375f7bdbb2631d2
Headers show
Series powerpc/boot: Only free if realloc() succeeds | expand

Commit Message

Michael Ellerman Feb. 29, 2024, 11:51 a.m. UTC
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>
---
 arch/powerpc/boot/simple_alloc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Michael Ellerman March 13, 2024, 1:19 p.m. UTC | #1
On Thu, 29 Feb 2024 22:51:49 +1100, Michael Ellerman wrote:
> 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.
> 
> 
> [...]

Applied to powerpc/next.

[1/1] powerpc/boot: Only free if realloc() succeeds
      https://git.kernel.org/powerpc/c/f2d5bccaca3e8c09c9b9c8485375f7bdbb2631d2

cheers
diff mbox series

Patch

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;
 }