--- x/drivers/block/nbd.c +++ y/drivers/block/nbd.c @@ -1018,9 +1018,9 @@ static void recv_work(struct work_struct nbd_mark_nsock_dead(nbd, nsock, 1); mutex_unlock(&nsock->tx_lock); - nbd_config_put(nbd); atomic_dec(&config->recv_threads); wake_up(&config->recv_wq); + nbd_config_put(nbd); kfree(args); }