From: Kent Overstreet Date: Mon, 13 Feb 2023 23:21:40 +0000 (-0500) Subject: bcachefs: Fix verify_update_old_key() X-Git-Tag: io_uring-6.7-2023-11-10~119^2~512 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=70f0b0fd7e9b85a14fdb8b3f229572b7439d8915;p=linux-block.git bcachefs: Fix verify_update_old_key() This fixes a very-rare race in our assertion, with needs_whiteout being modified in the btree key. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c index cefe62d28cc0..3773439d031a 100644 --- a/fs/bcachefs/btree_update_leaf.c +++ b/fs/bcachefs/btree_update_leaf.c @@ -56,9 +56,10 @@ static void verify_update_old_key(struct btree_trans *trans, struct btree_insert k = bkey_i_to_s_c(j_k); } - i->old_k.needs_whiteout = k.k->needs_whiteout; + u = *k.k; + u.needs_whiteout = i->old_k.needs_whiteout; - BUG_ON(memcmp(&i->old_k, k.k, sizeof(struct bkey))); + BUG_ON(memcmp(&i->old_k, &u, sizeof(struct bkey))); BUG_ON(i->old_v != k.v); #endif }