]> www.infradead.org Git - users/dwmw2/linux.git/commit
bcachefs: delete faulty fastpath in bch2_btree_path_traverse_cached()
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 14 Aug 2024 02:40:39 +0000 (22:40 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 14 Aug 2024 02:56:50 +0000 (22:56 -0400)
commita24e6e7146e361aa0855cf8ee3b2e80b8eb692e3
tree9635a2724eefac24fa77f924a00b09c97c8d0c27
parent8a2491db7bea6ad88ec568731eafd583501f1c96
bcachefs: delete faulty fastpath in bch2_btree_path_traverse_cached()

bch2_btree_path_traverse_cached() was previously checking if it could
just relock the path, which is a common idiom in path traversal.

However, it was using btree_node_relock(), not btree_path_relock();
btree_path_relock() only succeeds if the path was in state
BTREE_ITER_NEED_RELOCK.

If the path was in state BTREE_ITER_NEED_TRAVERSE a full traversal is
needed; this led to a null ptr deref in
bch2_btree_path_traverse_cached().

And the short circuit check here isn't needed, since it was already done
in the main bch2_btree_path_traverse_one().

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_key_cache.c