From: Kent Overstreet Date: Wed, 8 Feb 2023 23:04:22 +0000 (-0500) Subject: bcachefs: Fix btree_path_alloc() X-Git-Tag: v6.7-rc1~201^2~570 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=992fa4e62020d257197efa4ec567499d52e9c381;p=thirdparty%2Fkernel%2Flinux.git bcachefs: Fix btree_path_alloc() We need to call bch2_trans_update_max_paths() before marking the new path as allocated, since we're not initializing it yet. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index e5c82aa9bfeb3..3d138ae194696 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -1507,6 +1507,14 @@ static inline struct btree_path *btree_path_alloc(struct btree_trans *trans, btree_path_overflow(trans); idx = __ffs64(~trans->paths_allocated); + + /* + * Do this before marking the new path as allocated, since it won't be + * initialized yet: + */ + if (unlikely(idx > trans->nr_max_paths)) + bch2_trans_update_max_paths(trans); + trans->paths_allocated |= 1ULL << idx; path = &trans->paths[idx]; @@ -1517,9 +1525,6 @@ static inline struct btree_path *btree_path_alloc(struct btree_trans *trans, btree_path_list_add(trans, pos, path); trans->paths_sorted = false; - - if (unlikely(idx > trans->nr_max_paths)) - bch2_trans_update_max_paths(trans); return path; }