On 05/12, Kirill Tkhai wrote:
>
 --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -1845,11 +1845,13 @@ static __latent_entropy struct task_struct 
> *copy_process(
>       */
>       recalc_sigpending();
>       if (signal_pending(current)) {
> -             spin_unlock(&current->sighand->siglock);
> -             write_unlock_irq(&tasklist_lock);
>               retval = -ERESTARTNOINTR;
>               goto bad_fork_cancel_cgroup;
>       }
> +     if (unlikely(!(ns_of_pid(pid)->nr_hashed & PIDNS_HASH_ADDING))) {
> +             retval = -ENOMEM;
> +             goto bad_fork_cancel_cgroup;
> +     }
>  
>       if (likely(p->pid)) {
>               ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace);
> @@ -1907,6 +1909,8 @@ static __latent_entropy struct task_struct 
> *copy_process(
>       return p;
>  
>  bad_fork_cancel_cgroup:
> +     spin_unlock(&current->sighand->siglock);
> +     write_unlock_irq(&tasklist_lock);
>       cgroup_cancel_fork(p);

Looks good to me.

Oleg.

Reply via email to