diff options
Diffstat (limited to 'kernel/pid_namespace.c')
| -rw-r--r-- | kernel/pid_namespace.c | 10 | 
1 files changed, 4 insertions, 6 deletions
diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c index 98702b4b8851..ea567b78d1aa 100644 --- a/kernel/pid_namespace.c +++ b/kernel/pid_namespace.c  | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <linux/pid_namespace.h> | 12 | #include <linux/pid_namespace.h> | 
| 13 | #include <linux/syscalls.h> | 13 | #include <linux/syscalls.h> | 
| 14 | #include <linux/err.h> | 14 | #include <linux/err.h> | 
| 15 | #include <linux/acct.h> | ||
| 15 | 16 | ||
| 16 | #define BITS_PER_PAGE (PAGE_SIZE*8) | 17 | #define BITS_PER_PAGE (PAGE_SIZE*8) | 
| 17 | 18 | ||
| @@ -71,7 +72,7 @@ static struct pid_namespace *create_pid_namespace(unsigned int level) | |||
| 71 | struct pid_namespace *ns; | 72 | struct pid_namespace *ns; | 
| 72 | int i; | 73 | int i; | 
| 73 | 74 | ||
| 74 | ns = kmem_cache_alloc(pid_ns_cachep, GFP_KERNEL); | 75 | ns = kmem_cache_zalloc(pid_ns_cachep, GFP_KERNEL); | 
| 75 | if (ns == NULL) | 76 | if (ns == NULL) | 
| 76 | goto out; | 77 | goto out; | 
| 77 | 78 | ||
| @@ -84,17 +85,13 @@ static struct pid_namespace *create_pid_namespace(unsigned int level) | |||
| 84 | goto out_free_map; | 85 | goto out_free_map; | 
| 85 | 86 | ||
| 86 | kref_init(&ns->kref); | 87 | kref_init(&ns->kref); | 
| 87 | ns->last_pid = 0; | ||
| 88 | ns->child_reaper = NULL; | ||
| 89 | ns->level = level; | 88 | ns->level = level; | 
| 90 | 89 | ||
| 91 | set_bit(0, ns->pidmap[0].page); | 90 | set_bit(0, ns->pidmap[0].page); | 
| 92 | atomic_set(&ns->pidmap[0].nr_free, BITS_PER_PAGE - 1); | 91 | atomic_set(&ns->pidmap[0].nr_free, BITS_PER_PAGE - 1); | 
| 93 | 92 | ||
| 94 | for (i = 1; i < PIDMAP_ENTRIES; i++) { | 93 | for (i = 1; i < PIDMAP_ENTRIES; i++) | 
| 95 | ns->pidmap[i].page = NULL; | ||
| 96 | atomic_set(&ns->pidmap[i].nr_free, BITS_PER_PAGE); | 94 | atomic_set(&ns->pidmap[i].nr_free, BITS_PER_PAGE); | 
| 97 | } | ||
| 98 | 95 | ||
| 99 | return ns; | 96 | return ns; | 
| 100 | 97 | ||
| @@ -185,6 +182,7 @@ void zap_pid_ns_processes(struct pid_namespace *pid_ns) | |||
| 185 | 182 | ||
| 186 | /* Child reaper for the pid namespace is going away */ | 183 | /* Child reaper for the pid namespace is going away */ | 
| 187 | pid_ns->child_reaper = NULL; | 184 | pid_ns->child_reaper = NULL; | 
| 185 | acct_exit_ns(pid_ns); | ||
| 188 | return; | 186 | return; | 
| 189 | } | 187 | } | 
| 190 | 188 | ||
