kargs              91 include/linux/sched/task.h extern long _do_fork(struct kernel_clone_args *kargs);
kargs              92 include/linux/sched/task.h extern bool legacy_clone_args_valid(const struct kernel_clone_args *kargs);
kargs            2395 kernel/fork.c  bool legacy_clone_args_valid(const struct kernel_clone_args *kargs)
kargs            2398 kernel/fork.c  	if ((kargs->flags & CLONE_PIDFD) &&
kargs            2399 kernel/fork.c  	    (kargs->flags & CLONE_PARENT_SETTID))
kargs            2527 kernel/fork.c  noinline static int copy_clone_args_from_user(struct kernel_clone_args *kargs,
kargs            2551 kernel/fork.c  	*kargs = (struct kernel_clone_args){
kargs            2573 kernel/fork.c  static inline bool clone3_stack_valid(struct kernel_clone_args *kargs)
kargs            2575 kernel/fork.c  	if (kargs->stack == 0) {
kargs            2576 kernel/fork.c  		if (kargs->stack_size > 0)
kargs            2579 kernel/fork.c  		if (kargs->stack_size == 0)
kargs            2582 kernel/fork.c  		if (!access_ok((void __user *)kargs->stack, kargs->stack_size))
kargs            2586 kernel/fork.c  		kargs->stack += kargs->stack_size;
kargs            2593 kernel/fork.c  static bool clone3_args_valid(struct kernel_clone_args *kargs)
kargs            2599 kernel/fork.c  	if (kargs->flags & ~CLONE_LEGACY_FLAGS)
kargs            2606 kernel/fork.c  	if (kargs->flags & (CLONE_DETACHED | CSIGNAL))
kargs            2609 kernel/fork.c  	if ((kargs->flags & (CLONE_THREAD | CLONE_PARENT)) &&
kargs            2610 kernel/fork.c  	    kargs->exit_signal)
kargs            2613 kernel/fork.c  	if (!clone3_stack_valid(kargs))
kargs            2634 kernel/fork.c  	struct kernel_clone_args kargs;
kargs            2636 kernel/fork.c  	err = copy_clone_args_from_user(&kargs, uargs, size);
kargs            2640 kernel/fork.c  	if (!clone3_args_valid(&kargs))
kargs            2643 kernel/fork.c  	return _do_fork(&kargs);