diff options
Diffstat (limited to 'kernel/pid.c')
| -rw-r--r-- | kernel/pid.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/kernel/pid.c b/kernel/pid.c index 0db3e791a06d..66505c1dfc51 100644 --- a/kernel/pid.c +++ b/kernel/pid.c | |||
| @@ -75,6 +75,7 @@ struct pid_namespace init_pid_ns = { | |||
| 75 | [ 0 ... PIDMAP_ENTRIES-1] = { ATOMIC_INIT(BITS_PER_PAGE), NULL } | 75 | [ 0 ... PIDMAP_ENTRIES-1] = { ATOMIC_INIT(BITS_PER_PAGE), NULL } |
| 76 | }, | 76 | }, |
| 77 | .last_pid = 0, | 77 | .last_pid = 0, |
| 78 | .nr_hashed = PIDNS_HASH_ADDING, | ||
| 78 | .level = 0, | 79 | .level = 0, |
| 79 | .child_reaper = &init_task, | 80 | .child_reaper = &init_task, |
| 80 | .user_ns = &init_user_ns, | 81 | .user_ns = &init_user_ns, |
| @@ -373,14 +374,10 @@ EXPORT_SYMBOL_GPL(find_vpid); | |||
| 373 | /* | 374 | /* |
| 374 | * attach_pid() must be called with the tasklist_lock write-held. | 375 | * attach_pid() must be called with the tasklist_lock write-held. |
| 375 | */ | 376 | */ |
| 376 | void attach_pid(struct task_struct *task, enum pid_type type, | 377 | void attach_pid(struct task_struct *task, enum pid_type type) |
| 377 | struct pid *pid) | ||
| 378 | { | 378 | { |
| 379 | struct pid_link *link; | 379 | struct pid_link *link = &task->pids[type]; |
| 380 | 380 | hlist_add_head_rcu(&link->node, &link->pid->tasks[type]); | |
| 381 | link = &task->pids[type]; | ||
| 382 | link->pid = pid; | ||
| 383 | hlist_add_head_rcu(&link->node, &pid->tasks[type]); | ||
| 384 | } | 381 | } |
| 385 | 382 | ||
| 386 | static void __change_pid(struct task_struct *task, enum pid_type type, | 383 | static void __change_pid(struct task_struct *task, enum pid_type type, |
| @@ -412,7 +409,7 @@ void change_pid(struct task_struct *task, enum pid_type type, | |||
| 412 | struct pid *pid) | 409 | struct pid *pid) |
| 413 | { | 410 | { |
| 414 | __change_pid(task, type, pid); | 411 | __change_pid(task, type, pid); |
| 415 | attach_pid(task, type, pid); | 412 | attach_pid(task, type); |
| 416 | } | 413 | } |
| 417 | 414 | ||
| 418 | /* transfer_pid is an optimization of attach_pid(new), detach_pid(old) */ | 415 | /* transfer_pid is an optimization of attach_pid(new), detach_pid(old) */ |
| @@ -594,7 +591,6 @@ void __init pidmap_init(void) | |||
| 594 | /* Reserve PID 0. We never call free_pidmap(0) */ | 591 | /* Reserve PID 0. We never call free_pidmap(0) */ |
| 595 | set_bit(0, init_pid_ns.pidmap[0].page); | 592 | set_bit(0, init_pid_ns.pidmap[0].page); |
| 596 | atomic_dec(&init_pid_ns.pidmap[0].nr_free); | 593 | atomic_dec(&init_pid_ns.pidmap[0].nr_free); |
| 597 | init_pid_ns.nr_hashed = PIDNS_HASH_ADDING; | ||
| 598 | 594 | ||
| 599 | init_pid_ns.pid_cachep = KMEM_CACHE(pid, | 595 | init_pid_ns.pid_cachep = KMEM_CACHE(pid, |
| 600 | SLAB_HWCACHE_ALIGN | SLAB_PANIC); | 596 | SLAB_HWCACHE_ALIGN | SLAB_PANIC); |
