forked from rubenslte/android_kernel_samsung_msm8226
UPSTREAM: f2fs: sanity check segment count
commit b9dd46188edc2f0d1f37328637860bb65a771124 upstream. F2FS uses 4 bytes to represent block address. As a result, supported size of disk is 16 TB and it equals to 16 * 1024 * 1024 / 2 segments. Signed-off-by: Jin Qian <jinqian@google.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Bug: 36815012 Change-Id: I30ea36df066bc07e32e767336b7cae12063fe415 CVE-2017-10662 Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
This commit is contained in:
committed by
Francescodario Cuzzocrea
parent
3aa040ac74
commit
1c09283d21
@@ -1401,6 +1401,13 @@ static int sanity_check_raw_super(struct f2fs_sb_info *sbi,
|
||||
if (sanity_check_area_boundary(sbi, bh))
|
||||
return 1;
|
||||
|
||||
if (le32_to_cpu(raw_super->segment_count) > F2FS_MAX_SEGMENT) {
|
||||
f2fs_msg(sb, KERN_INFO,
|
||||
"Invalid segment count (%u)",
|
||||
le32_to_cpu(raw_super->segment_count));
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1424,6 +1431,7 @@ int sanity_check_ckpt(struct f2fs_sb_info *sbi)
|
||||
f2fs_msg(sbi->sb, KERN_ERR, "A bug case: need to run fsck");
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -288,6 +288,12 @@ struct f2fs_nat_block {
|
||||
#define SIT_VBLOCK_MAP_SIZE 64
|
||||
#define SIT_ENTRY_PER_BLOCK (PAGE_CACHE_SIZE / sizeof(struct f2fs_sit_entry))
|
||||
|
||||
/*
|
||||
* F2FS uses 4 bytes to represent block address. As a result, supported size of
|
||||
* disk is 16 TB and it equals to 16 * 1024 * 1024 / 2 segments.
|
||||
*/
|
||||
#define F2FS_MAX_SEGMENT ((16 * 1024 * 1024) / 2)
|
||||
|
||||
/*
|
||||
* Note that f2fs_sit_entry->vblocks has the following bit-field information.
|
||||
* [15:10] : allocation type such as CURSEG_XXXX_TYPE
|
||||
|
||||
Reference in New Issue
Block a user