Loading kernel/fork.c +48 −35 Original line number Diff line number Diff line Loading @@ -288,7 +288,10 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) tsk->stack_canary = get_random_int(); #endif /* One for us, one for whoever does the "release_task()" (usually parent) */ /* * One for us, one for whoever does the "release_task()" (usually * parent) */ atomic_set(&tsk->usage, 2); #ifdef CONFIG_BLK_DEV_IO_TRACE tsk->btrace_seq = 0; Loading Loading @@ -1216,25 +1219,33 @@ static struct task_struct *copy_process(unsigned long clone_flags, retval = perf_event_init_task(p); if (retval) goto bad_fork_cleanup_policy; if ((retval = audit_alloc(p))) retval = audit_alloc(p); if (retval) goto bad_fork_cleanup_policy; /* copy all the process information */ if ((retval = copy_semundo(clone_flags, p))) retval = copy_semundo(clone_flags, p); if (retval) goto bad_fork_cleanup_audit; if ((retval = copy_files(clone_flags, p))) retval = copy_files(clone_flags, p); if (retval) goto bad_fork_cleanup_semundo; if ((retval = copy_fs(clone_flags, p))) retval = copy_fs(clone_flags, p); if (retval) goto bad_fork_cleanup_files; if ((retval = copy_sighand(clone_flags, p))) retval = copy_sighand(clone_flags, p); if (retval) goto bad_fork_cleanup_fs; if ((retval = copy_signal(clone_flags, p))) retval = copy_signal(clone_flags, p); if (retval) goto bad_fork_cleanup_sighand; if ((retval = copy_mm(clone_flags, p))) retval = copy_mm(clone_flags, p); if (retval) goto bad_fork_cleanup_signal; if ((retval = copy_namespaces(clone_flags, p))) retval = copy_namespaces(clone_flags, p); if (retval) goto bad_fork_cleanup_mm; if ((retval = copy_io(clone_flags, p))) retval = copy_io(clone_flags, p); if (retval) goto bad_fork_cleanup_namespaces; retval = copy_thread(clone_flags, stack_start, stack_size, p, regs); if (retval) Loading Loading @@ -1685,12 +1696,14 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) */ if (unshare_flags & (CLONE_NEWIPC|CLONE_SYSVSEM)) do_sysvsem = 1; if ((err = unshare_fs(unshare_flags, &new_fs))) err = unshare_fs(unshare_flags, &new_fs); if (err) goto bad_unshare_out; if ((err = unshare_fd(unshare_flags, &new_fd))) err = unshare_fd(unshare_flags, &new_fd); if (err) goto bad_unshare_cleanup_fs; if ((err = unshare_nsproxy_namespaces(unshare_flags, &new_nsproxy, new_fs))) err = unshare_nsproxy_namespaces(unshare_flags, &new_nsproxy, new_fs); if (err) goto bad_unshare_cleanup_fd; if (new_fs || new_fd || do_sysvsem || new_nsproxy) { Loading Loading
kernel/fork.c +48 −35 Original line number Diff line number Diff line Loading @@ -288,7 +288,10 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) tsk->stack_canary = get_random_int(); #endif /* One for us, one for whoever does the "release_task()" (usually parent) */ /* * One for us, one for whoever does the "release_task()" (usually * parent) */ atomic_set(&tsk->usage, 2); #ifdef CONFIG_BLK_DEV_IO_TRACE tsk->btrace_seq = 0; Loading Loading @@ -1216,25 +1219,33 @@ static struct task_struct *copy_process(unsigned long clone_flags, retval = perf_event_init_task(p); if (retval) goto bad_fork_cleanup_policy; if ((retval = audit_alloc(p))) retval = audit_alloc(p); if (retval) goto bad_fork_cleanup_policy; /* copy all the process information */ if ((retval = copy_semundo(clone_flags, p))) retval = copy_semundo(clone_flags, p); if (retval) goto bad_fork_cleanup_audit; if ((retval = copy_files(clone_flags, p))) retval = copy_files(clone_flags, p); if (retval) goto bad_fork_cleanup_semundo; if ((retval = copy_fs(clone_flags, p))) retval = copy_fs(clone_flags, p); if (retval) goto bad_fork_cleanup_files; if ((retval = copy_sighand(clone_flags, p))) retval = copy_sighand(clone_flags, p); if (retval) goto bad_fork_cleanup_fs; if ((retval = copy_signal(clone_flags, p))) retval = copy_signal(clone_flags, p); if (retval) goto bad_fork_cleanup_sighand; if ((retval = copy_mm(clone_flags, p))) retval = copy_mm(clone_flags, p); if (retval) goto bad_fork_cleanup_signal; if ((retval = copy_namespaces(clone_flags, p))) retval = copy_namespaces(clone_flags, p); if (retval) goto bad_fork_cleanup_mm; if ((retval = copy_io(clone_flags, p))) retval = copy_io(clone_flags, p); if (retval) goto bad_fork_cleanup_namespaces; retval = copy_thread(clone_flags, stack_start, stack_size, p, regs); if (retval) Loading Loading @@ -1685,12 +1696,14 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) */ if (unshare_flags & (CLONE_NEWIPC|CLONE_SYSVSEM)) do_sysvsem = 1; if ((err = unshare_fs(unshare_flags, &new_fs))) err = unshare_fs(unshare_flags, &new_fs); if (err) goto bad_unshare_out; if ((err = unshare_fd(unshare_flags, &new_fd))) err = unshare_fd(unshare_flags, &new_fd); if (err) goto bad_unshare_cleanup_fs; if ((err = unshare_nsproxy_namespaces(unshare_flags, &new_nsproxy, new_fs))) err = unshare_nsproxy_namespaces(unshare_flags, &new_nsproxy, new_fs); if (err) goto bad_unshare_cleanup_fd; if (new_fs || new_fd || do_sysvsem || new_nsproxy) { Loading