summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiong Weimin <xiongweimin@kylinos.cn>2026-08-05 11:29:31 +0800
committerMichael S. Tsirkin <mst@redhat.com>2026-09-07 18:54:04 -0400
commit81489b32a21c9360f8750d1fb600155d27452e19 (patch)
tree6b5016fd9ae98eea73b7c4f94ca03512c719d28d
parente4f4761879a230aa59e569102a6ab9851847d833 (diff)
virtio_input: reset device if input_register_device() fails
Probe marks the device DRIVER_OK with virtio_device_ready() before calling input_register_device(). If registration fails, the error path cleared vi->ready and called del_vqs() while the device was still live, so the device could keep DMA to queues that were already torn down. Match remove/freeze: call virtio_reset_device() on that path before tearing down the virtqueues. Fixes: 271c865161c5 ("Add virtio-input driver.") Signed-off-by: Xiong Weimin <xiongweimin@kylinos.cn> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Message-ID: <20260805032931.1606652-1-xiongweimin@kylinos.cn>
-rw-r--r--drivers/virtio/virtio_input.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
index deec24e8e682..1a87be4c88cf 100644
--- a/drivers/virtio/virtio_input.c
+++ b/drivers/virtio/virtio_input.c
@@ -331,6 +331,7 @@ err_input_register:
spin_lock_irqsave(&vi->lock, flags);
vi->ready = false;
spin_unlock_irqrestore(&vi->lock, flags);
+ virtio_reset_device(vdev);
err_mt_init_slots:
input_free_device(vi->idev);
err_input_alloc: