lkml.org 
[lkml]   [2021]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v10 10/17] virtio: Handle device reset failure in register_virtio_device()
Date
The device reset may fail in virtio-vdpa case now, so add checks to
its return value and fail the register_virtio_device().

Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
---
drivers/virtio/virtio.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index a15beb6b593b..8df75425fb43 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -349,7 +349,9 @@ int register_virtio_device(struct virtio_device *dev)

/* We always start by resetting the device, in case a previous
* driver messed it up. This also tests that code path a little. */
- dev->config->reset(dev);
+ err = dev->config->reset(dev);
+ if (err)
+ goto err_reset;

/* Acknowledge that we've seen the device. */
virtio_add_status(dev, VIRTIO_CONFIG_S_ACKNOWLEDGE);
@@ -362,10 +364,13 @@ int register_virtio_device(struct virtio_device *dev)
*/
err = device_add(&dev->dev);
if (err)
- ida_simple_remove(&virtio_index_ida, dev->index);
-out:
- if (err)
- virtio_add_status(dev, VIRTIO_CONFIG_S_FAILED);
+ goto err_add;
+
+ return 0;
+err_add:
+ virtio_add_status(dev, VIRTIO_CONFIG_S_FAILED);
+err_reset:
+ ida_simple_remove(&virtio_index_ida, dev->index);
return err;
}
EXPORT_SYMBOL_GPL(register_virtio_device);
--
2.11.0
\
 
 \ /
  Last update: 2021-07-29 09:37    [W:0.772 / U:0.016 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site