diff options
author | Fan Li <fanofcode.li@samsung.com> | 2016-01-04 02:56:50 -0500 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-01-06 22:15:49 -0500 |
commit | de1475cc53b2d6442443dcf5d66ed0fc50ed3c7e (patch) | |
tree | c0f535152439e214a003c764ad96241c13418330 | |
parent | 957efb0c2144cc5ff1795f43bf2d2ca430eaa227 (diff) |
f2fs: read isize while holding i_mutex in fiemap
make sure the isize we read doesn't change during the process.
Signed-off-by: Fan li <fanofcode.li@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r-- | fs/f2fs/data.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 89a978c57da9..ac5bea0f5f09 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c | |||
@@ -784,7 +784,7 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, | |||
784 | { | 784 | { |
785 | struct buffer_head map_bh; | 785 | struct buffer_head map_bh; |
786 | sector_t start_blk, last_blk; | 786 | sector_t start_blk, last_blk; |
787 | loff_t isize = i_size_read(inode); | 787 | loff_t isize; |
788 | u64 logical = 0, phys = 0, size = 0; | 788 | u64 logical = 0, phys = 0, size = 0; |
789 | u32 flags = 0; | 789 | u32 flags = 0; |
790 | int ret = 0; | 790 | int ret = 0; |
@@ -800,6 +800,8 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, | |||
800 | } | 800 | } |
801 | 801 | ||
802 | mutex_lock(&inode->i_mutex); | 802 | mutex_lock(&inode->i_mutex); |
803 | |||
804 | isize = i_size_read(inode); | ||
803 | if (start >= isize) | 805 | if (start >= isize) |
804 | goto out; | 806 | goto out; |
805 | 807 | ||