mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
f2fs: reject device aliasing without a multi-device configuration
A malformed F2FS image can enable F2FS_FEATURE_DEVICE_ALIAS without
providing a multi-device configuration. For a regular single-device
filesystem, f2fs_scan_devices() returns without allocating sbi->devs.
In this state, f2fs_dev_is_alloc_blocked() passes the device alias
feature check and dereferences FDEV(0), resulting in a NULL pointer
dereference during segment allocation.
Device aliasing requires at least one secondary device. Reject
superblocks that enable device aliasing without entries for both the
main and secondary devices in sanity_check_raw_super().
Fixes: eae3faf210 ("f2fs: support dynamic reserve/release for device aliasing")
Reported-by: syzbot+ae5b8eb92ed40411ce16@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=ae5b8eb92ed40411ce16
Signed-off-by: Seongjae Jeong <jsjlee1020@gmail.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
4faeea625c
commit
7566fec606
|
|
@ -4154,6 +4154,12 @@ static int sanity_check_raw_super(struct f2fs_sb_info *sbi,
|
|||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
if (__F2FS_HAS_FEATURE(raw_super, F2FS_FEATURE_DEVICE_ALIAS) &&
|
||||
(!RDEV(0).path[0] || !RDEV(1).path[0])) {
|
||||
f2fs_info(sbi, "Device aliasing requires a multi-device configuration");
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
if (RDEV(0).path[0]) {
|
||||
block_t dev_seg_count = le32_to_cpu(RDEV(0).total_segments);
|
||||
int i = 1;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user