lkml.org 
[lkml]   [2009]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] deadlock when swapping to FAT
    Hi

    swapon will deadlock when an attempt to swap to a file on FAT filesystem
    is made. swapon holds i_mutex and FAT bmap is attempting to take it again.

    This bug was introduced somewhere between 2.6.27 and 2.6.28.

    No other filesystem is taking i_mutex in bmap, so I removed it as well.

    Note that there are many other cases where bmap can race with truncate in
    almost all the filesystems. They don't impose an immediate threat because
    bmap can be only called by root. These problems should be solved in a
    generic way, not in individual filesystems.

    Mikulas

    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com
    Cc: <stable@kernel.org>

    ---
    fs/fat/inode.c | 2 --
    1 file changed, 2 deletions(-)

    Index: linux-2.6.29-rc7-devel/fs/fat/inode.c
    ===================================================================
    --- linux-2.6.29-rc7-devel.orig/fs/fat/inode.c 2009-03-10 21:17:22.000000000 +0100
    +++ linux-2.6.29-rc7-devel/fs/fat/inode.c 2009-03-11 22:52:38.000000000 +0100
    @@ -202,9 +202,7 @@ static sector_t _fat_bmap(struct address
    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;
    }

    \
     
     \ /
      Last update: 2009-03-12 13:33    [W:0.027 / U:0.852 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site