On Mon, 20 Apr 2020 18:39:29 -0400 Dan Schatzberg wrote: > > @@ -1140,8 +1215,17 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) > blk_mq_freeze_queue(lo->lo_queue); > > spin_lock_irq(&lo->lo_lock); > + destroy_workqueue(lo->workqueue); Destruct it out of atomic context. > lo->lo_backing_file = NULL; > + list_for_each_entry_safe(worker, pos, &lo->idle_worker_list, > + idle_list) { > + list_del(&worker->idle_list); > + rb_erase(&worker->rb_node, &lo->worker_tree); > + css_put(worker->css); > + kfree(worker); > + } > spin_unlock_irq(&lo->lo_lock);