lkml.org 
[lkml]   [2008]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 25/30] r/o bind mounts: make access() use new r/o helper
    From
    Date

    It is OK to let access() go without using a mnt_want/drop_write() pair because
    it doesn't actually do writes to the filesystem, and it is inherently racy
    anyway. This is a rare case when it is OK to use __mnt_is_readonly()
    directly.

    Acked-by: Al Viro <viro@ZenIV.linux.org.uk>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    ---

    linux-2.6.git-dave/fs/open.c | 13 +++++++++++--
    1 file changed, 11 insertions(+), 2 deletions(-)

    diff -puN fs/open.c~r-o-bind-mounts-make-access-use-mnt-check fs/open.c
    --- linux-2.6.git/fs/open.c~r-o-bind-mounts-make-access-use-mnt-check 2008-02-15 13:25:57.000000000 -0800
    +++ linux-2.6.git-dave/fs/open.c 2008-02-15 13:25:57.000000000 -0800
    @@ -459,8 +459,17 @@ asmlinkage long sys_faccessat(int dfd, c
    if(res || !(mode & S_IWOTH) ||
    special_file(nd.path.dentry->d_inode->i_mode))
    goto out_path_release;
    -
    - if(IS_RDONLY(nd.path.dentry->d_inode))
    + /*
    + * This is a rare case where using __mnt_is_readonly()
    + * is OK without a mnt_want/drop_write() pair. Since
    + * no actual write to the fs is performed here, we do
    + * not need to telegraph to that to anyone.
    + *
    + * By doing this, we accept that this access is
    + * inherently racy and know that the fs may change
    + * state before we even see this result.
    + */
    + if (__mnt_is_readonly(nd.path.mnt))
    res = -EROFS;

    out_path_release:
    _

    \
     
     \ /
      Last update: 2008-02-15 23:53    [W:0.020 / U:30.248 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site