diff --git a/kernel/pid.c b/kernel/pid.c index cdf63e53a01425182d66f1c8883a249cedbaaa88..b88fe5e494ccfd46e26fbe78e843c1fc2f7244f7 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -233,8 +233,10 @@ struct pid *alloc_pid(struct pid_namespace *ns) out_free: spin_lock_irq(&pidmap_lock); - while (++i <= ns->level) - idr_remove(&ns->idr, (pid->numbers + i)->nr); + while (++i <= ns->level) { + upid = pid->numbers + i; + idr_remove(&upid->ns->idr, upid->nr); + } /* On failure to allocate the first pid, reset the state */ if (ns->pid_allocated == PIDNS_ADDING)