From: Kent Overstreet <kent.overstreet@gmail.com> Date: Mon, 24 Jun 2019 22:11:35 +0000 (-0400) Subject: bcachefs: Fix array overrun with unknown btree roots X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=2ded276b7e20084842225b47100f3391e00f540f;p=linux.git bcachefs: Fix array overrun with unknown btree roots Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev> --- diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c index 2b7133e376e3d..e0df2c0a4fdf5 100644 --- a/fs/bcachefs/recovery.c +++ b/fs/bcachefs/recovery.c @@ -379,7 +379,15 @@ static int journal_replay_entry_early(struct bch_fs *c, switch (entry->type) { case BCH_JSET_ENTRY_btree_root: { - struct btree_root *r = &c->btree_roots[entry->btree_id]; + struct btree_root *r; + + if (entry->btree_id >= BTREE_ID_NR) { + bch_err(c, "filesystem has unknown btree type %u", + entry->btree_id); + return -EINVAL; + } + + r = &c->btree_roots[entry->btree_id]; if (entry->u64s) { r->level = entry->level;