On Wed, Jun 14, 2017 at 04:17:43PM +0100, David Howells wrote: > int pid_ns_prepare_proc(struct pid_namespace *ns) > { > + struct proc_fs_context *ctx; > + struct fs_context *fc; > struct vfsmount *mnt; > + int ret; > + > + fc = vfs_new_fs_context(&proc_fs_type, NULL, 0, FS_CONTEXT_FOR_NEW); > + if (IS_ERR(fc)) > + return PTR_ERR(fc); > + > + ctx = container_of(fc, struct proc_fs_context, fc); > + if (ctx->pid_ns != ns) { > + put_pid_ns(ctx->pid_ns); > + get_pid_ns(ns); > + ctx->pid_ns = ns; > + } > + > + ret = vfs_get_tree(fc); > + if (ret < 0) { > + put_fs_context(fc); > + return ret; > + } > > - mnt = kern_mount_data(&proc_fs_type, ns); > + mnt = kern_mount_data_fc(fc); > + put_fs_context(fc); Same as with ipc; do you need to go through dynamic allocation, container_of, patching it up, etc.?