Commit f108ddd4 authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: Fix shift overflow in btree_lost_data()

Reported-by: syzbot+29f65db1a5fe427b5c56@syzkaller.appspotmail.com
Fixes: 55936afe ("bcachefs: Flag btrees with missing data")
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 9667214b
...@@ -1555,6 +1555,12 @@ enum btree_id { ...@@ -1555,6 +1555,12 @@ enum btree_id {
BTREE_ID_NR BTREE_ID_NR
}; };
/*
* Maximum number of btrees that we will _ever_ have under the current scheme,
* where we refer to them with bitfields
*/
#define BTREE_ID_NR_MAX 64
static inline bool btree_id_is_alloc(enum btree_id id) static inline bool btree_id_is_alloc(enum btree_id id)
{ {
switch (id) { switch (id) {
......
...@@ -35,6 +35,9 @@ ...@@ -35,6 +35,9 @@
void bch2_btree_lost_data(struct bch_fs *c, enum btree_id btree) void bch2_btree_lost_data(struct bch_fs *c, enum btree_id btree)
{ {
if (btree >= BTREE_ID_NR_MAX)
return;
u64 b = BIT_ULL(btree); u64 b = BIT_ULL(btree);
if (!(c->sb.btrees_lost_data & b)) { if (!(c->sb.btrees_lost_data & b)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment