lkml.org 
[lkml]   [2017]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC] Add option to mount only a pids subset
    Again, I can't really review this, I know nothing about vfs, but since
    nobody else replied...

    On 03/20, Alexey Gladkov wrote:
    >
    > @@ -97,7 +169,23 @@ static struct dentry *proc_mount(struct file_system_type *fs_type,
    > ns = task_active_pid_ns(current);
    > }
    >
    > - return mount_ns(fs_type, flags, data, ns, ns->user_ns, proc_fill_super);
    > + root = mount_ns(fs_type, flags, data, ns, ns->user_ns, proc_fill_super);
    > +
    > + if (!IS_ERR(root)) {
    > + if (!proc_fill_options(data, &opts))
    > + return ERR_PTR(-EINVAL);

    So we have to call proc_fill_options() twice, not good... Yes, I understand
    why, but perhaps we factor it out somehow, we can pack options + pid_ns into
    sb->s_fs_info. Nevermind, this is minor.

    > + if (opts.pid_only) {
    > + int ret;
    > +
    > + if (!ns->pidfs && (ret = fill_pidfs_root(root->d_sb)))
    > + return ERR_PTR(ret);
    > +
    > + root = ns->pidfs;

    Afaics this lacks dget(ns->pidfs) which should pair with dput(mnt.mnt_root)
    in cleanup_mnt(). IIUC otherwise ns->pidfs can go away after umount, OTOH,
    if we return ns->pidfs then dget(sb->s_root) in mount_ns() is not balanced.
    But this all is fixeable.

    So with this change "mount -opidonly" creates another IS_ROOT() dentry which
    is not equal to sb->s_root. I simply do not know if this is technically
    correct or not... but, say, the "Only bind mounts can have disconnected paths"
    comment in path_connected() makes me worry ;)

    And this obviously means that /path-to-pidonly-mnt/ won't share dentries with
    the normal /proc mount. Not really good imo even if not really wrong... Lets
    look at proc_flush_task(). The exiting task will flush its $pid dentries in
    /proc/ but not in /path-to-pidonly-mnt/ iiuc. Again, not really a bug, but
    still...

    Oleg.

    \
     
     \ /
      Last update: 2017-03-23 17:08    [W:5.222 / U:0.596 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site