From: daihuaigang <daihuaigang129@xxxxxxx> fix AB-BA deadlock between cache register and cache_set_free. Signed-off-by: daihuaigang <daihuaigang129@xxxxxxx> --- drivers/md/bcache/super.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c index bf3de14..f17953c 100644 --- a/drivers/md/bcache/super.c +++ b/drivers/md/bcache/super.c @@ -1690,10 +1690,8 @@ static void cache_set_free(struct closure *cl) if (ca) { ca->set = NULL; c->cache = NULL; - kobject_put(&ca->kobj); } - if (c->moving_gc_wq) destroy_workqueue(c->moving_gc_wq); bioset_exit(&c->bio_split); @@ -1704,6 +1702,8 @@ static void cache_set_free(struct closure *cl) list_del(&c->list); mutex_unlock(&bch_register_lock); + if (ca) + kobject_put(&ca->kobj); pr_info("Cache set %pU unregistered\n", c->set_uuid); wake_up(&unregister_wait); -- 1.8.3.1