From 8707ab0df25955f4e11bf60643e08c018a72e6fc Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 4 Apr 2020 15:45:06 -0400 Subject: [PATCH] bcachefs: Fix another error path locking bug btree_update_nodes_written() was leaking a btree node lock on failure to get a journal reservation. Signed-off-by: Kent Overstreet Signed-off-by: Kent Overstreet --- fs/bcachefs/btree_update_interior.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c index d5bea4f8ea021..8b31f4d63094d 100644 --- a/fs/bcachefs/btree_update_interior.c +++ b/fs/bcachefs/btree_update_interior.c @@ -725,7 +725,7 @@ again: bch2_journal_res_put(&c->journal, &res); bch2_journal_preres_put(&c->journal, &as->journal_preres); - +free_update: /* Do btree write after dropping journal res: */ if (b) { /* @@ -736,8 +736,9 @@ again: six_unlock_intent(&b->c.lock); } - btree_update_nodes_reachable(as, res.seq); -free_update: + if (!ret) + btree_update_nodes_reachable(as, res.seq); + __bch2_btree_update_free(as); /* * for flush_held_btree_writes() waiting on updates to flush or -- 2.30.2