diff options
Diffstat (limited to 'kernel/nsproxy.c')
| -rw-r--r-- | kernel/nsproxy.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/kernel/nsproxy.c b/kernel/nsproxy.c index 1d3ef29a2583..63598dca2d0c 100644 --- a/kernel/nsproxy.c +++ b/kernel/nsproxy.c | |||
| @@ -80,12 +80,6 @@ static struct nsproxy *create_new_namespaces(unsigned long flags, | |||
| 80 | goto out_pid; | 80 | goto out_pid; |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | new_nsp->user_ns = copy_user_ns(flags, tsk->nsproxy->user_ns); | ||
| 84 | if (IS_ERR(new_nsp->user_ns)) { | ||
| 85 | err = PTR_ERR(new_nsp->user_ns); | ||
| 86 | goto out_user; | ||
| 87 | } | ||
| 88 | |||
| 89 | new_nsp->net_ns = copy_net_ns(flags, tsk->nsproxy->net_ns); | 83 | new_nsp->net_ns = copy_net_ns(flags, tsk->nsproxy->net_ns); |
| 90 | if (IS_ERR(new_nsp->net_ns)) { | 84 | if (IS_ERR(new_nsp->net_ns)) { |
| 91 | err = PTR_ERR(new_nsp->net_ns); | 85 | err = PTR_ERR(new_nsp->net_ns); |
| @@ -95,9 +89,6 @@ static struct nsproxy *create_new_namespaces(unsigned long flags, | |||
| 95 | return new_nsp; | 89 | return new_nsp; |
| 96 | 90 | ||
| 97 | out_net: | 91 | out_net: |
| 98 | if (new_nsp->user_ns) | ||
| 99 | put_user_ns(new_nsp->user_ns); | ||
| 100 | out_user: | ||
| 101 | if (new_nsp->pid_ns) | 92 | if (new_nsp->pid_ns) |
| 102 | put_pid_ns(new_nsp->pid_ns); | 93 | put_pid_ns(new_nsp->pid_ns); |
| 103 | out_pid: | 94 | out_pid: |
| @@ -130,7 +121,7 @@ int copy_namespaces(unsigned long flags, struct task_struct *tsk) | |||
| 130 | get_nsproxy(old_ns); | 121 | get_nsproxy(old_ns); |
| 131 | 122 | ||
| 132 | if (!(flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | | 123 | if (!(flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | |
| 133 | CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET))) | 124 | CLONE_NEWPID | CLONE_NEWNET))) |
| 134 | return 0; | 125 | return 0; |
| 135 | 126 | ||
| 136 | if (!capable(CAP_SYS_ADMIN)) { | 127 | if (!capable(CAP_SYS_ADMIN)) { |
| @@ -173,8 +164,6 @@ void free_nsproxy(struct nsproxy *ns) | |||
| 173 | put_ipc_ns(ns->ipc_ns); | 164 | put_ipc_ns(ns->ipc_ns); |
| 174 | if (ns->pid_ns) | 165 | if (ns->pid_ns) |
| 175 | put_pid_ns(ns->pid_ns); | 166 | put_pid_ns(ns->pid_ns); |
| 176 | if (ns->user_ns) | ||
| 177 | put_user_ns(ns->user_ns); | ||
| 178 | put_net(ns->net_ns); | 167 | put_net(ns->net_ns); |
| 179 | kmem_cache_free(nsproxy_cachep, ns); | 168 | kmem_cache_free(nsproxy_cachep, ns); |
| 180 | } | 169 | } |
| @@ -189,7 +178,7 @@ int unshare_nsproxy_namespaces(unsigned long unshare_flags, | |||
| 189 | int err = 0; | 178 | int err = 0; |
| 190 | 179 | ||
| 191 | if (!(unshare_flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | | 180 | if (!(unshare_flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | |
| 192 | CLONE_NEWUSER | CLONE_NEWNET))) | 181 | CLONE_NEWNET))) |
| 193 | return 0; | 182 | return 0; |
| 194 | 183 | ||
| 195 | if (!capable(CAP_SYS_ADMIN)) | 184 | if (!capable(CAP_SYS_ADMIN)) |
