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);