Files
linux/fs
Ryusuke Konishi ebeccaaef6 nilfs2: fix shift-out-of-bounds due to too large exponent of block size
If field s_log_block_size of superblock data is corrupted and too large,
init_nilfs() and load_nilfs() still can trigger a shift-out-of-bounds
warning followed by a kernel panic (if panic_on_warn is set):

 shift exponent 38973 is too large for 32-bit type 'int'
 Call Trace:
  <TASK>
  dump_stack_lvl+0xcd/0x134
  ubsan_epilogue+0xb/0x50
  __ubsan_handle_shift_out_of_bounds.cold.12+0x17b/0x1f5
  init_nilfs.cold.11+0x18/0x1d [nilfs2]
  nilfs_mount+0x9b5/0x12b0 [nilfs2]
  ...

This fixes the issue by adding and using a new helper function for getting
block size with sanity check.

Link: https://lkml.kernel.org/r/20221027044306.42774-3-konishi.ryusuke@gmail.com
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Tested-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2022-11-18 13:55:08 -08:00
..
2022-07-02 18:52:21 +09:00
2022-05-09 16:21:45 -04:00
2022-09-24 07:00:00 +02:00
2022-11-18 13:55:07 -08:00
2022-05-09 16:21:46 -04:00
2022-09-11 20:26:07 -07:00
2022-09-24 07:00:00 +02:00
2022-11-18 13:55:06 -08:00
2022-08-20 11:34:33 -04:00
2022-06-29 13:07:16 +02:00
2022-06-28 13:58:05 -04:00
2022-05-22 21:03:01 +01:00