diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c
index bf68ea49447b..1768d46980e9 100644
--- a/fs/bcachefs/move.c
+++ b/fs/bcachefs/move.c
@@ -983,7 +983,7 @@ static bool bformat_needs_redo(struct bkey_format *f)
 		if ((f->bits_per_field[i] == unpacked_bits) && field_offset)
 			return true;
 
-		if (((field_offset + ((1ULL << f->bits_per_field[i]) - 1)) &
+		if (((field_offset + (1ULL << (f->bits_per_field[i] - 1))) &
 		     unpacked_mask) <
 		    field_offset)
 			return true;