--- 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);
 }