lkml.org 
[lkml]   [2008]   [Oct]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 17/21] fat: Fix _fat_bmap() race
    From
    Date

    fat_get_cluster() assumes the requested blocknr isn't truncated during
    read. _fat_bmap() doesn't follow this rule.

    This protects it by ->i_mutex.

    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    ---

    fs/fat/inode.c | 9 ++++++++-
    1 file changed, 8 insertions(+), 1 deletion(-)

    diff -puN fs/fat/inode.c~fat_fat_bmap-fix fs/fat/inode.c
    --- linux-2.6/fs/fat/inode.c~fat_fat_bmap-fix 2008-09-14 05:25:34.000000000 +0900
    +++ linux-2.6-hirofumi/fs/fat/inode.c 2008-09-14 06:28:26.000000000 +0900
    @@ -199,7 +199,14 @@ static ssize_t fat_direct_IO(int rw, str

    static sector_t _fat_bmap(struct address_space *mapping, sector_t block)
    {
    - return generic_block_bmap(mapping, block, fat_get_block);
    + sector_t blocknr;
    +
    + /* fat_get_cluster() assumes the requested blocknr isn't truncated. */
    + mutex_lock(&mapping->host->i_mutex);
    + blocknr = generic_block_bmap(mapping, block, fat_get_block);
    + mutex_unlock(&mapping->host->i_mutex);
    +
    + return blocknr;
    }

    static const struct address_space_operations fat_aops = {
    _

    \
     
     \ /
      Last update: 2008-10-15 16:13    [W:0.019 / U:32.608 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site