diff options
author | OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> | 2009-03-11 18:03:23 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-11 20:04:18 +0100 |
commit | 3a95ea1155c5d44aa58dde2f64f0ddafe27fd1fb (patch) | |
tree | de6d6392c58a37a7f13bacf899b3f56c32fabcf4 /fs/fat/inode.c | |
parent | proc: fix kflags to uflags copying in /proc/kpageflags (diff) | |
download | linux-3a95ea1155c5d44aa58dde2f64f0ddafe27fd1fb.tar.xz linux-3a95ea1155c5d44aa58dde2f64f0ddafe27fd1fb.zip |
Fix _fat_bmap() locking
On swapon() path, it has already i_mutex. So, this uses i_alloc_sem
instead of it.
Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Reported-by: Laurent GUERBY <laurent@guerby.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/fat/inode.c')
-rw-r--r-- | fs/fat/inode.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/fat/inode.c b/fs/fat/inode.c index 6b74d09adbe5..de0004fe6e00 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -202,9 +202,9 @@ static sector_t _fat_bmap(struct address_space *mapping, sector_t block) sector_t blocknr; /* fat_get_cluster() assumes the requested blocknr isn't truncated. */ - mutex_lock(&mapping->host->i_mutex); + down_read(&mapping->host->i_alloc_sem); blocknr = generic_block_bmap(mapping, block, fat_get_block); - mutex_unlock(&mapping->host->i_mutex); + up_read(&mapping->host->i_alloc_sem); return blocknr; } |