• Seth Forshee's avatar
    UBUNTU: SAUCE: block_dev: Forbid unprivileged mounting when device is opened for writing · 4de0a612
    Seth Forshee authored
    For unprivileged mounts to be safe the user must not be able to
    make changes to the backing store while it is mounted. This patch
    takes a step towards preventing this by refusing to mount in a
    user namepspace if the block device is open for writing and
    refusing attempts to open the block device for writing by non-
    root while it is mounted in a user namespace.
    
    To prevent this from happening we use i_writecount in the inodes
    of the bdev filesystem similarly to how it is used for regular
    files. Whenever the device is opened for writing i_writecount
    is checked; if it is negative the open returns -EBUSY, otherwise
    i_writecount is incremented. On mount, a positive i_writecount
    results in mount_bdev returning -EBUSY, otherwise i_writecount
    is decremented. Opens by root and mounts from init_user_ns do not
    check nor modify i_writecount.
    Signed-off-by: default avatarSeth Forshee <seth.forshee@canonical.com>
    Signed-off-by: default avatarTim Gardner <tim.gardner@canonical.com>
    4de0a612
block_dev.c 47.4 KB