summaryrefslogtreecommitdiffstats
path: root/kernel/pid.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/pid.c')
-rw-r--r--kernel/pid.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/pid.c b/kernel/pid.c
index 16263b526560..0a9f2e437217 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -37,14 +37,14 @@
37#include <linux/init_task.h> 37#include <linux/init_task.h>
38#include <linux/syscalls.h> 38#include <linux/syscalls.h>
39#include <linux/proc_ns.h> 39#include <linux/proc_ns.h>
40#include <linux/proc_fs.h> 40#include <linux/refcount.h>
41#include <linux/anon_inodes.h> 41#include <linux/anon_inodes.h>
42#include <linux/sched/signal.h> 42#include <linux/sched/signal.h>
43#include <linux/sched/task.h> 43#include <linux/sched/task.h>
44#include <linux/idr.h> 44#include <linux/idr.h>
45 45
46struct pid init_struct_pid = { 46struct pid init_struct_pid = {
47 .count = ATOMIC_INIT(1), 47 .count = REFCOUNT_INIT(1),
48 .tasks = { 48 .tasks = {
49 { .first = NULL }, 49 { .first = NULL },
50 { .first = NULL }, 50 { .first = NULL },
@@ -108,8 +108,7 @@ void put_pid(struct pid *pid)
108 return; 108 return;
109 109
110 ns = pid->numbers[pid->level].ns; 110 ns = pid->numbers[pid->level].ns;
111 if ((atomic_read(&pid->count) == 1) || 111 if (refcount_dec_and_test(&pid->count)) {
112 atomic_dec_and_test(&pid->count)) {
113 kmem_cache_free(ns->pid_cachep, pid); 112 kmem_cache_free(ns->pid_cachep, pid);
114 put_pid_ns(ns); 113 put_pid_ns(ns);
115 } 114 }
@@ -212,7 +211,7 @@ struct pid *alloc_pid(struct pid_namespace *ns)
212 } 211 }
213 212
214 get_pid_ns(ns); 213 get_pid_ns(ns);
215 atomic_set(&pid->count, 1); 214 refcount_set(&pid->count, 1);
216 for (type = 0; type < PIDTYPE_MAX; ++type) 215 for (type = 0; type < PIDTYPE_MAX; ++type)
217 INIT_HLIST_HEAD(&pid->tasks[type]); 216 INIT_HLIST_HEAD(&pid->tasks[type]);
218 217