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.?

Reply via email to