diff options
author | Yunlei He <heyunlei@huawei.com> | 2015-12-28 16:48:32 +0300 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-12-30 21:14:17 +0300 |
commit | 179448bfe4cd201e98e728391c6b01b25c849fe8 (patch) | |
tree | ecf6295f3123872805bbeb31671ac7f7425b8df8 /fs/f2fs/data.c | |
parent | 9a950d52b7f0e1c64c2cc70d350562fb18c8b451 (diff) | |
download | linux-179448bfe4cd201e98e728391c6b01b25c849fe8.tar.xz |
f2fs: add a max block check for get_data_block_bmap
This patch adds a max block check for get_data_block_bmap.
Trinity test program will send a block number as parameter into
ioctl_fibmap, which will be used in get_node_path(), when the block
number large than f2fs max blocks, it will trigger kernel bug.
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Xue Liu <liuxueliu.liu@huawei.com>
[Jaegeuk Kim: fix missing condition, pointed by Chao Yu]
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/data.c')
-rw-r--r-- | fs/f2fs/data.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index d67c599510d9..6fbfc70ac8a0 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -761,6 +761,10 @@ static int get_data_block_dio(struct inode *inode, sector_t iblock, static int get_data_block_bmap(struct inode *inode, sector_t iblock, struct buffer_head *bh_result, int create) { + /* Block number less than F2FS MAX BLOCKS */ + if (unlikely(iblock >= max_file_size(0))) + return -EFBIG; + return __get_data_block(inode, iblock, bh_result, create, F2FS_GET_BLOCK_BMAP); } |