On Thu, May 6, 2021, 7:38 AM Philippe Mathieu-Daudé <phi...@redhat.com> wrote:
> The ALLOCA(3) man-page mentions its "use is discouraged". > > Replace it by a g_new() call. > > Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > 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? Also, alloca just moves a stack pointer, where malloc has complex interactions. Are you sure that's a safe change here? Warner - vec = alloca(count * sizeof(struct iovec)); > if (lock_iovec(VERIFY_READ, vec, arg2, count, 1) < 0) > goto efault; > ret = get_errno(writev(arg1, vec, count)); > -- > 2.26.3 > >