Reported-by: [email protected]
Signed-off-by: Kent Overstreet <[email protected]>
---
 fs/bcachefs/backpointers.c     | 7 +++++--
 fs/bcachefs/sb-errors_format.h | 2 +-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/fs/bcachefs/backpointers.c b/fs/bcachefs/backpointers.c
index ff08afd667a0..702bf62d7fa7 100644
--- a/fs/bcachefs/backpointers.c
+++ b/fs/bcachefs/backpointers.c
@@ -249,9 +249,12 @@ struct bkey_s_c bch2_backpointer_get_key(struct 
btree_trans *trans,
                                         struct btree_iter *iter,
                                         unsigned iter_flags)
 {
-       if (likely(!bp.v->level)) {
-               struct bch_fs *c = trans->c;
+       struct bch_fs *c = trans->c;
 
+       if (unlikely(bp.v->btree_id >= btree_id_nr_alive(c)))
+               return bkey_s_c_null;
+
+       if (likely(!bp.v->level)) {
                bch2_trans_node_iter_init(trans, iter,
                                          bp.v->btree_id,
                                          bp.v->pos,
diff --git a/fs/bcachefs/sb-errors_format.h b/fs/bcachefs/sb-errors_format.h
index 917ef6aa4a23..e73d1c60198e 100644
--- a/fs/bcachefs/sb-errors_format.h
+++ b/fs/bcachefs/sb-errors_format.h
@@ -67,7 +67,7 @@ enum bch_fsck_flags {
        x(btree_node_bkey_past_bset_end,                         54,    0)      
        \
        x(btree_node_bkey_bad_format,                            55,    0)      
        \
        x(btree_node_bad_bkey,                                   56,    0)      
        \
-       x(btree_node_bkey_out_of_order,                          57,    0)      
        \
+       x(btree_node_bkey_out_of_order,                          57,    
FSCK_AUTOFIX)   \
        x(btree_root_bkey_invalid,                               58,    
FSCK_AUTOFIX)   \
        x(btree_root_read_error,                                 59,    
FSCK_AUTOFIX)   \
        x(btree_root_bad_min_key,                                60,    0)      
        \
-- 
2.45.2


Reply via email to