--- x/drivers/block/loop.c +++ y/drivers/block/loop.c @@ -1974,7 +1974,8 @@ static void loop_process_work(struct loo */ if (worker && !work_pending(&worker->work)) { worker->last_ran_at = jiffies; - list_add_tail(&worker->idle_list, &lo->idle_worker_list); + if (list_empty(&worker->idle_list)) + list_add_tail(&worker->idle_list, &lo->idle_worker_list); loop_set_timer(lo); } spin_unlock_irq(&lo->lo_work_lock);