diff options
| author | Chao Yu <chao@kernel.org> | 2026-10-01 00:04:50 +0000 |
|---|---|---|
| committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2026-10-01 14:59:02 +0000 |
| commit | 63bb030f36b85782f1ec6157d78292466abad1c8 (patch) | |
| tree | 1d0e2c12eb2d016257871410adcd5a8ca4e74553 /tools/lib/python/kdoc/python_version.py | |
| parent | 1383cff4ccf3c8833c6255edffa29eb67c6419bb (diff) | |
f2fs: fix to set sbi->log_blocksize in advance
syzbot reported a shift-out-of-bounds in __f2fs_commit_super():
UBSAN: shift-out-of-bounds in fs/f2fs/super.c:3950:27
shift exponent 4294967287 is too large for 64-bit type 'sector_t'
(aka 'unsigned long long')
CPU: 1 UID: 0 PID: 5622 Comm: syz-executor329 Not tainted
Call Trace:
<TASK>
dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120
ubsan_epilogue+0xa/0x30 lib/ubsan.c:233
__ubsan_handle_shift_out_of_bounds+0x36d/0x400 lib/ubsan.c:494
__f2fs_commit_super+0x43e/0x4d0 fs/f2fs/super.c:3950
sanity_check_area_boundary+0x7c5/0xe20 fs/f2fs/super.c:4040
sanity_check_raw_super fs/f2fs/super.c:4215 [inline]
read_raw_super_block fs/f2fs/super.c:4625 [inline]
f2fs_fill_super+0x1920/0x7fa0 fs/f2fs/super.c:5160
Commit b32d4bdbae61 ("f2fs: parameterize sector conversion macros")
parameterized SECTOR_FROM_BLOCK() with sbi->log_blocksize, where
F2FS_LOG_SECTORS_PER_BLOCK(sbi) evaluates to (sbi->log_blocksize - 9).
During mount, read_raw_super_block() calls sanity_check_raw_super()
before sbi->log_blocksize is initialized in init_sb_info(). If the
image requires alignment fixing (main_end_blkaddr < seg_end_blkaddr),
sanity_check_area_boundary() updates raw_super->segment_count and calls
__f2fs_commit_super() to write back the superblock.
At this point, sbi->log_blocksize is still zero, leading to an underflow
in (0 - 9) = 4294967287 and triggering UBSAN shift-out-of-bounds when
computing SECTOR_FROM_BLOCK(sbi, folio->index).
Fix this by initializing sbi->log_blocksize from raw_super->log_blocksize
prior to calling __f2fs_commit_super() in sanity_check_area_boundary().
Note that raw_super->log_blocksize has already been validated against
PAGE_SHIFT earlier in sanity_check_raw_super().
Fixes: b32d4bdbae61 ("f2fs: parameterize sector conversion macros")
Reported-by: syzbot+dfcbc1741488709db4b2@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=dfcbc1741488709db4b2
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions
