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); |