bcachefs: Fix count_iters_for_insert()
authorKent Overstreet <kent.overstreet@gmail.com>
Sat, 21 Mar 2020 18:08:01 +0000 (14:08 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:37 +0000 (17:08 -0400)
This fixes a transaction iterator overflow.

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

index beb3b694e33c2cabb79feffc8a501711d15cf841..8e5070d5a39b4d72ddba9fcb8fa932c46fa57aa9 100644 (file)
@@ -44,6 +44,10 @@ static int count_iters_for_insert(struct btree_trans *trans,
         * extent we're inserting and overwriting:
         */
        *nr_iters += 1;
+       if (*nr_iters >= max_iters) {
+               *end = bpos_min(*end, k.k->p);
+               ret = 1;
+       }
 
        switch (k.k->type) {
        case KEY_TYPE_extent: