• Christian Brauner's avatar
    binderfs: make each binderfs mount a new instance · b6c770d7
    Christian Brauner authored
    When currently mounting binderfs in the same ipc namespace twice:
    
    mount -t binder binder /A
    mount -t binder binder /B
    
    then the binderfs instances mounted on /A and /B will be the same, i.e.
    they will have the same superblock. This was the first approach that seemed
    reasonable. However, this leads to some problems and inconsistencies:
    
    /* private binderfs instance in same ipc namespace */
    There is no way for a user to request a private binderfs instance in the
    same ipc namespace.
    This request has been made in a private mail to me by two independent
    people.
    
    /* bind-mounts */
    If users want the same binderfs instance to appear in multiple places they
    can use bind mounts. So there is no value in having a request for a new
    binderfs mount giving them the same instance.
    
    /* unexpected behavior */
    It's surprising that request to mount binderfs is not giving the user a new
    instance like tmpfs, devpts, ramfs, and others do.
    
    /* past mistakes */
    Other pseudo-filesystems once made the same mistakes of giving back the
    same superblock when actually requesting a new mount (cf. devpts's
    deprecated "newinstance" option).
    We should not make the same mistake. Once we've committed to always giving
    back the same superblock in the same IPC namespace with the next kernel
    release we will not be able to make that change so better to do it now.
    
    /* kdbusfs */
    It was pointed out to me that kdbusfs - which is conceptually closely
    related to binderfs - also allowed users to get a private kdbusfs instance
    in the same IPC namespace by making each mount of kdbusfs a separate
    instance. I think that makes a lot of sense.
    Signed-off-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    b6c770d7
binderfs.c 12.2 KB