Skip to content

Commit 67c5641

Browse files
author
Kent Overstreet
committed
bcachefs: Fix loop restart in bch2_btree_transactions_read()
Accidental infinite loop; also fix btree_deadlock_to_text() Signed-off-by: Kent Overstreet <[email protected]>
1 parent 1539bdf commit 67c5641

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

fs/bcachefs/debug.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ static ssize_t bch2_btree_transactions_read(struct file *file, char __user *buf,
610610
list_sort(&c->btree_trans_list, list_ptr_order_cmp);
611611

612612
list_for_each_entry(trans, &c->btree_trans_list, list) {
613-
if ((ulong) trans < i->iter)
613+
if ((ulong) trans <= i->iter)
614614
continue;
615615

616616
i->iter = (ulong) trans;
@@ -832,16 +832,16 @@ static const struct file_operations btree_transaction_stats_op = {
832832
static void btree_deadlock_to_text(struct printbuf *out, struct bch_fs *c)
833833
{
834834
struct btree_trans *trans;
835-
pid_t iter = 0;
835+
ulong iter = 0;
836836
restart:
837837
seqmutex_lock(&c->btree_trans_lock);
838-
list_for_each_entry(trans, &c->btree_trans_list, list) {
839-
struct task_struct *task = READ_ONCE(trans->locking_wait.task);
838+
list_sort(&c->btree_trans_list, list_ptr_order_cmp);
840839

841-
if (!task || task->pid <= iter)
840+
list_for_each_entry(trans, &c->btree_trans_list, list) {
841+
if ((ulong) trans <= iter)
842842
continue;
843843

844-
iter = task->pid;
844+
iter = (ulong) trans;
845845

846846
if (!closure_get_not_zero(&trans->ref))
847847
continue;

0 commit comments

Comments
 (0)