diff options
author | 2024-10-11 22:06:58 -0400 | |
---|---|---|
committer | 2024-10-12 03:02:16 -0400 | |
commit | c1bd21bb65182afca490db4031890802a1a546b7 (patch) | |
tree | e6bdce34a6ec84b00fd2df73e0f51c905ecbe350 | |
parent | bcachefs: Fix bch2_have_enough_devs() for BCH_SB_MEMBER_INVALID (diff) | |
download | wireguard-linux-c1bd21bb65182afca490db4031890802a1a546b7.tar.xz wireguard-linux-c1bd21bb65182afca490db4031890802a1a546b7.zip |
bcachefs: Fix invalid shift in member_to_text()
Reported-by: syzbot+064ce437a1ad63d3f6ef@syzkaller.appspotmail.com
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | fs/bcachefs/sb-members.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/bcachefs/sb-members.c b/fs/bcachefs/sb-members.c index 02bcde3c1b02..fb08dd680dac 100644 --- a/fs/bcachefs/sb-members.c +++ b/fs/bcachefs/sb-members.c @@ -163,6 +163,11 @@ static int validate_member(struct printbuf *err, return -BCH_ERR_invalid_sb_members; } + if (m.btree_bitmap_shift >= 64) { + prt_printf(err, "device %u: invalid btree_bitmap_shift %u", i, m.btree_bitmap_shift); + return -BCH_ERR_invalid_sb_members; + } + return 0; } @@ -247,7 +252,10 @@ static void member_to_text(struct printbuf *out, prt_newline(out); prt_printf(out, "Btree allocated bitmap blocksize:\t"); - prt_units_u64(out, 1ULL << m.btree_bitmap_shift); + if (m.btree_bitmap_shift < 64) + prt_units_u64(out, 1ULL << m.btree_bitmap_shift); + else + prt_printf(out, "(invalid shift %u)", m.btree_bitmap_shift); prt_newline(out); prt_printf(out, "Btree allocated bitmap:\t"); |