|
@@ -220,11 +220,11 @@ void exit_task_namespaces(struct task_struct *p)
|
|
|
|
|
|
SYSCALL_DEFINE2(setns, int, fd, int, nstype)
|
|
|
{
|
|
|
- const struct proc_ns_operations *ops;
|
|
|
struct task_struct *tsk = current;
|
|
|
struct nsproxy *new_nsproxy;
|
|
|
struct proc_ns *ei;
|
|
|
struct file *file;
|
|
|
+ struct ns_common *ns;
|
|
|
int err;
|
|
|
|
|
|
file = proc_ns_fget(fd);
|
|
@@ -233,8 +233,8 @@ SYSCALL_DEFINE2(setns, int, fd, int, nstype)
|
|
|
|
|
|
err = -EINVAL;
|
|
|
ei = get_proc_ns(file_inode(file));
|
|
|
- ops = ei->ns_ops;
|
|
|
- if (nstype && (ops->type != nstype))
|
|
|
+ ns = ei->ns;
|
|
|
+ if (nstype && (ns->ops->type != nstype))
|
|
|
goto out;
|
|
|
|
|
|
new_nsproxy = create_new_namespaces(0, tsk, current_user_ns(), tsk->fs);
|
|
@@ -243,7 +243,7 @@ SYSCALL_DEFINE2(setns, int, fd, int, nstype)
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- err = ops->install(new_nsproxy, ei->ns);
|
|
|
+ err = ns->ops->install(new_nsproxy, ns);
|
|
|
if (err) {
|
|
|
free_nsproxy(new_nsproxy);
|
|
|
goto out;
|