From: Kent Overstreet Date: Sat, 4 Apr 2020 19:45:06 +0000 (-0400) Subject: bcachefs: Fix another error path locking bug X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=8707ab0df25955f4e11bf60643e08c018a72e6fc;p=linux.git 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 --- 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