On Mon, Feb 26, 2024 at 10:48:14AM +0100, Philippe Mathieu-Daudé wrote: > Hi, > > On 26/2/24 10:06, dinglimin wrote: > > Signed-off-by: dinglimin <dingli...@cmss.chinamobile.com> > > --- > > semihosting/uaccess.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/semihosting/uaccess.c b/semihosting/uaccess.c > > index dc587d73bc..7788ead9b2 100644 > > --- a/semihosting/uaccess.c > > +++ b/semihosting/uaccess.c > > @@ -14,10 +14,10 @@ > > void *uaccess_lock_user(CPUArchState *env, target_ulong addr, > > target_ulong len, bool copy) > > { > > - void *p = malloc(len); > > + void *p = g_try_malloc(len); > > if (p && copy) { > > if (cpu_memory_rw_debug(env_cpu(env), addr, p, len, 0)) { > > - free(p); > > + g_free(p); > > p = NULL; > > } > > } > > This seems dangerous, now all users of uaccess_lock_user() must > use g_free(), in particular lock_user_string() which is used more > than a hundred of times:
This is not true for many years now. GLib is hardcoded to always use the system allocator, so g_malloc can be freely mixed with free, and vica-verca. Using 'g_free' is stylistically preferred, but not functionally required. > > $ git grep -w lock_user_string | wc -l > 116 > > > @@ -87,5 +87,5 @@ void uaccess_unlock_user(CPUArchState *env, void *p, > > if (len) { > > cpu_memory_rw_debug(env_cpu(env), addr, p, len, 1); > > } > > - free(p); > > + g_free(p); > > } > > With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|