From 70f0b0fd7e9b85a14fdb8b3f229572b7439d8915 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Mon, 13 Feb 2023 18:21:40 -0500 Subject: [PATCH] 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 --- fs/bcachefs/btree_update_leaf.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 } -- 2.25.1