diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index 288701ccbf7a0219c9ea81ebd8cf59a14575191c..c84486b3e43d87a9f3d664861b5ed47e968eb157 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c @@ -1738,6 +1738,14 @@ static void virtcons_remove(struct virtio_device *vdev) unregister_chrdev(portdev->chr_major, "virtio-portsdev"); + /* + * When yanking out a device, we immediately lose the + * (device-side) queues. So there's no point in keeping the + * guest side around till we drop our final reference. This + * also means that any ports which are in an open state will + * have to just stop using the port, as the vqs are going + * away. + */ if (use_multiport(portdev)) { struct port_buffer *buf; unsigned int len;