diff --git a/kernel/fork.c b/kernel/fork.c index 5359facf98675d7746e29f3883b07be4e242dca1..737db182843764cc1d2a16b32d65341ea21aef44 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2102,7 +2102,7 @@ static __latent_entropy struct task_struct *copy_process( */ retval = cgroup_can_fork(p); if (retval) - goto bad_fork_put_pidfd; + goto bad_fork_cgroup_threadgroup_change_end; /* * From this point on we must avoid any synchronous user-space @@ -2217,11 +2217,12 @@ static __latent_entropy struct task_struct *copy_process( spin_unlock(¤t->sighand->siglock); write_unlock_irq(&tasklist_lock); cgroup_cancel_fork(p); +bad_fork_cgroup_threadgroup_change_end: + cgroup_threadgroup_change_end(current); bad_fork_put_pidfd: if (clone_flags & CLONE_PIDFD) ksys_close(pidfd); bad_fork_free_pid: - cgroup_threadgroup_change_end(current); if (pid != &init_struct_pid) free_pid(pid); bad_fork_cleanup_thread: diff --git a/samples/pidfd/.gitignore b/samples/pidfd/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..be52b3ba6e4b0dfeb212dc1232632de46d4ad6d7 --- /dev/null +++ b/samples/pidfd/.gitignore @@ -0,0 +1 @@ +pidfd-metadata