]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bcachefs: Add missing synchronize_srcu_expedited() call when shutting down
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 8 Jun 2024 21:36:24 +0000 (17:36 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 10 Jun 2024 17:17:16 +0000 (13:17 -0400)
We use the polling interface to srcu for tracking pending frees; when
shutting down we don't need to wait for an srcu barrier to free them,
but SRCU still gets confused if we shutdown with an outstanding grace
period.

Reported-by: syzbot+6a038377f0a594d7d44e@syzkaller.appspotmail.com
Reported-by: syzbot+0ece6edfd05ed20e32d9@syzkaller.appspotmail.com
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c

index 53b63be537e559eb1ad46175cb208fc9c6d76aef..3694c600a3add8e05c06c8e24a8021ecd9f6e695 100644 (file)
@@ -3401,8 +3401,10 @@ void bch2_fs_btree_iter_exit(struct bch_fs *c)
                bch2_time_stats_exit(&s->lock_hold_times);
        }
 
-       if (c->btree_trans_barrier_initialized)
+       if (c->btree_trans_barrier_initialized) {
+               synchronize_srcu_expedited(&c->btree_trans_barrier);
                cleanup_srcu_struct(&c->btree_trans_barrier);
+       }
        mempool_exit(&c->btree_trans_mem_pool);
        mempool_exit(&c->btree_trans_pool);
 }