Lines Matching refs:uca
376 linux_clone3_args_valid(struct l_user_clone_args *uca) in linux_clone3_args_valid() argument
380 if ((uca->flags & ~(LINUX_CLONE_LEGACY_FLAGS | in linux_clone3_args_valid()
383 if ((uca->flags & (LINUX_CLONE_DETACHED | LINUX_CSIGNAL)) != 0) in linux_clone3_args_valid()
386 if ((uca->flags & (LINUX_CLONE_SIGHAND | LINUX_CLONE_CLEAR_SIGHAND)) == in linux_clone3_args_valid()
389 if ((uca->flags & (LINUX_CLONE_THREAD | LINUX_CLONE_PARENT)) != 0 && in linux_clone3_args_valid()
390 uca->exit_signal != 0) in linux_clone3_args_valid()
394 if (uca->set_tid_size > LINUX_MAX_PID_NS_LEVEL) in linux_clone3_args_valid()
396 if (uca->set_tid == 0 && uca->set_tid_size > 0) in linux_clone3_args_valid()
398 if (uca->set_tid != 0 && uca->set_tid_size == 0) in linux_clone3_args_valid()
401 if (uca->stack == 0 && uca->stack_size > 0) in linux_clone3_args_valid()
403 if (uca->stack != 0 && uca->stack_size == 0) in linux_clone3_args_valid()
407 if ((uca->exit_signal & ~(uint64_t)LINUX_CSIGNAL) != 0) in linux_clone3_args_valid()
411 if ((uca->flags & LINUX_CLONE_NEWTIME) != 0) { in linux_clone3_args_valid()
415 if ((uca->flags & LINUX_CLONE_INTO_CGROUP) != 0) { in linux_clone3_args_valid()
419 if (uca->set_tid != 0 || uca->set_tid_size != 0) { in linux_clone3_args_valid()
430 struct l_user_clone_args *uca; in linux_clone3() local
445 size = max(args->usize, sizeof(*uca)); in linux_clone3()
446 uca = malloc(size, M_LINUX, M_WAITOK | M_ZERO); in linux_clone3()
447 error = copyin(args->uargs, uca, args->usize); in linux_clone3()
450 error = linux_clone3_args_valid(uca); in linux_clone3()
454 ca->flags = uca->flags; in linux_clone3()
455 ca->child_tid = PTRIN(uca->child_tid); in linux_clone3()
456 ca->parent_tid = PTRIN(uca->parent_tid); in linux_clone3()
457 ca->exit_signal = uca->exit_signal; in linux_clone3()
458 ca->stack = uca->stack + uca->stack_size; in linux_clone3()
459 ca->stack_size = uca->stack_size; in linux_clone3()
460 ca->tls = uca->tls; in linux_clone3()
468 free(uca, M_LINUX); in linux_clone3()