diff options
| author | David S. Miller <davem@davemloft.net> | 2010-01-22 22:45:46 -0800 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-01-22 22:45:46 -0800 |
| commit | 6be325719b3e54624397e413efd4b33a997e55a3 (patch) | |
| tree | 57f321a56794cab2222e179b16731e0d76a4a68a /kernel/pid.c | |
| parent | 26d92f9276a56d55511a427fb70bd70886af647a (diff) | |
| parent | 92dcffb916d309aa01778bf8963a6932e4014d07 (diff) | |
| download | kernel_replicant_linux-6be325719b3e54624397e413efd4b33a997e55a3.tar.gz kernel_replicant_linux-6be325719b3e54624397e413efd4b33a997e55a3.tar.bz2 kernel_replicant_linux-6be325719b3e54624397e413efd4b33a997e55a3.zip | |
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Diffstat (limited to 'kernel/pid.c')
| -rw-r--r-- | kernel/pid.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/kernel/pid.c b/kernel/pid.c index d3f722d20f9c..2e17c9c92cbe 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -141,11 +141,12 @@ static int alloc_pidmap(struct pid_namespace *pid_ns) * installing it: */ spin_lock_irq(&pidmap_lock); - if (map->page) - kfree(page); - else + if (!map->page) { map->page = page; + page = NULL; + } spin_unlock_irq(&pidmap_lock); + kfree(page); if (unlikely(!map->page)) break; } @@ -268,12 +269,11 @@ struct pid *alloc_pid(struct pid_namespace *ns) for (type = 0; type < PIDTYPE_MAX; ++type) INIT_HLIST_HEAD(&pid->tasks[type]); + upid = pid->numbers + ns->level; spin_lock_irq(&pidmap_lock); - for (i = ns->level; i >= 0; i--) { - upid = &pid->numbers[i]; + for ( ; upid >= pid->numbers; --upid) hlist_add_head_rcu(&upid->pid_chain, &pid_hash[pid_hashfn(upid->nr, upid->ns)]); - } spin_unlock_irq(&pidmap_lock); out: |
