copy address of proc_ns_ops into ns_common
[linux-2.6-block.git] / kernel / nsproxy.c
index ef42d0ab3115709adbe4b4a27c71f3638a481954..87c37221cb7f66a6b7e1e082821a8857479177e6 100644 (file)
@@ -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;