.subdir         = RB_ROOT,
        .name           = "/proc",
 };
-
-int pid_ns_prepare_proc(struct pid_namespace *ns)
-{
-       struct proc_fs_context *ctx;
-       struct fs_context *fc;
-       struct vfsmount *mnt;
-
-       fc = fs_context_for_mount(&proc_fs_type, SB_KERNMOUNT);
-       if (IS_ERR(fc))
-               return PTR_ERR(fc);
-
-       if (fc->user_ns != ns->user_ns) {
-               put_user_ns(fc->user_ns);
-               fc->user_ns = get_user_ns(ns->user_ns);
-       }
-
-       ctx = fc->fs_private;
-       if (ctx->pid_ns != ns) {
-               put_pid_ns(ctx->pid_ns);
-               get_pid_ns(ns);
-               ctx->pid_ns = ns;
-       }
-
-       mnt = fc_mount(fc);
-       put_fs_context(fc);
-       if (IS_ERR(mnt))
-               return PTR_ERR(mnt);
-
-       ns->proc_mnt = mnt;
-       return 0;
-}
-
-void pid_ns_release_proc(struct pid_namespace *ns)
-{
-       kern_unmount(ns->proc_mnt);
-}
 
        unsigned int level;
        struct pid_namespace *parent;
 #ifdef CONFIG_PROC_FS
-       struct vfsmount *proc_mnt;
        struct dentry *proc_self;
        struct dentry *proc_thread_self;
 #endif
 #endif
        struct user_namespace *user_ns;
        struct ucounts *ucounts;
-       struct work_struct proc_work;
        kgid_t pid_gid;
        int hide_pid;
        int reboot;     /* group exit code if this pidns was rebooted */
 
 
 #ifdef CONFIG_PROC_FS
 
-extern int pid_ns_prepare_proc(struct pid_namespace *ns);
-extern void pid_ns_release_proc(struct pid_namespace *ns);
 extern int proc_alloc_inum(unsigned int *pino);
 extern void proc_free_inum(unsigned int inum);
 
 #else /* CONFIG_PROC_FS */
 
-static inline int pid_ns_prepare_proc(struct pid_namespace *ns) { return 0; }
-static inline void pid_ns_release_proc(struct pid_namespace *ns) {}
-
 static inline int proc_alloc_inum(unsigned int *inum)
 {
        *inum = 1;
 
                        /* Handle a fork failure of the first process */
                        WARN_ON(ns->child_reaper);
                        ns->pid_allocated = 0;
-                       /* fall through */
-               case 0:
-                       schedule_work(&ns->proc_work);
                        break;
                }
 
                tmp = tmp->parent;
        }
 
-       if (unlikely(is_child_reaper(pid))) {
-               if (pid_ns_prepare_proc(ns))
-                       goto out_free;
-       }
-
        get_pid_ns(ns);
        refcount_set(&pid->count, 1);
        for (type = 0; type < PIDTYPE_MAX; ++type)
 
        return READ_ONCE(*pkc);
 }
 
-static void proc_cleanup_work(struct work_struct *work)
-{
-       struct pid_namespace *ns = container_of(work, struct pid_namespace, proc_work);
-       pid_ns_release_proc(ns);
-}
-
 static struct ucounts *inc_pid_namespaces(struct user_namespace *ns)
 {
        return inc_ucount(ns, current_euid(), UCOUNT_PID_NAMESPACES);
        ns->user_ns = get_user_ns(user_ns);
        ns->ucounts = ucounts;
        ns->pid_allocated = PIDNS_ADDING;
-       INIT_WORK(&ns->proc_work, proc_cleanup_work);
 
        return ns;