On Thu, 6 May 2021 at 15:17, Warner Losh <imp@xxxxxxxxxx> wrote: > > > > On Thu, May 6, 2021, 7:38 AM Philippe Mathieu-Daudé <philmd@xxxxxxxxxx> wrote: >> >> The ALLOCA(3) man-page mentions its "use is discouraged". >> >> Replace it by a g_new() call. >> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@xxxxxxxxxx> >> --- >> bsd-user/syscall.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c >> index 4abff796c76..dbee0385ceb 100644 >> --- a/bsd-user/syscall.c >> +++ b/bsd-user/syscall.c >> @@ -355,9 +355,8 @@ abi_long do_freebsd_syscall(void *cpu_env, int num, abi_long arg1, >> case TARGET_FREEBSD_NR_writev: >> { >> int count = arg3; >> - struct iovec *vec; >> + g_autofree struct iovec *vec = g_new(struct iovec, count); > > > Where is this freed? g_autofree, so it gets freed when it goes out of scope. https://developer.gnome.org/glib/stable/glib-Miscellaneous-Macros.html#g-autofree > Also, alloca just moves a stack pointer, where malloc has complex interactions. Are you sure that's a safe change here? alloca()ing something with size determined by the guest is definitely not safe :-) malloc as part of "handle this syscall" is pretty common, at least in linux-user. thanks -- PMM