• Dave Hansen's avatar
    r/o bind mounts: rearrange may_open() to be r/o friendly · b41572e9
    Dave Hansen authored
    may_open() calls vfs_permission() before it does checks for IS_RDONLY(inode).
    It checks _again_ inside of vfs_permission().
    
    The check inside of vfs_permission() is going away eventually.  With the
    mnt_want/drop_write() functions, all of the r/o checks (except for this one)
    are consistently done before calling permission().  Because of this, I'd like
    to use permission() to hold a debugging check to make sure that the
    mnt_want/drop_write() calls are actually being made.
    
    So, to do this:
    1. remove the IS_RDONLY() check from permission()
    2. enforce that you must mnt_want_write() before
       even calling permission()
    3. actually add the debugging check to permission()
    
    We need to rearrange may_open() to do r/o checks before calling permission().
    Here's the patch.
    Signed-off-by: default avatarDave Hansen <haveblue@us.ibm.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b41572e9
namei.c 68.9 KB