From 36af114d78995a32a743d4da79bc7c8dae68366f Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 23 Jul 2021 17:53:50 +0200 Subject: [PATCH] lx_emul: enhance krealloc implementation Issue #4253 --- .../src/lib/lx_emul/shadow/mm/slab_common.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/repos/dde_linux/src/lib/lx_emul/shadow/mm/slab_common.c b/repos/dde_linux/src/lib/lx_emul/shadow/mm/slab_common.c index 693f1aec82..722ccd90a5 100644 --- a/repos/dde_linux/src/lib/lx_emul/shadow/mm/slab_common.c +++ b/repos/dde_linux/src/lib/lx_emul/shadow/mm/slab_common.c @@ -25,9 +25,19 @@ void * krealloc(const void * p,size_t new_size,gfp_t flags) if (!new_size) { kfree(p); return NULL; - } - lx_emul_trace_and_stop(__func__); + } else { + + unsigned long const old_size = ksize(p); + void *ret; + + if (new_size <= old_size) + return p; + + ret = kmalloc(new_size, flags); + memcpy(ret, p, old_size); + return ret; + } }