summaryrefslogtreecommitdiff
path: root/drivers/virtio
diff options
context:
space:
mode:
authorweiping zhang <zwp10758@gmail.com>2017-11-29 04:23:01 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-12-16 12:32:26 +0300
commit08fa6f2e23c519cefbf03d27731e04babf076cb4 (patch)
tree6cc6d178ab1a59a28e623142f02aabcdc79e5f0e /drivers/virtio
parent7983427599c456b1ff68d5571d98c8b3d7982757 (diff)
downloadlinux-08fa6f2e23c519cefbf03d27731e04babf076cb4.tar.xz
virtio: release virtio index when fail to device_register
commit e60ea67bb60459b95a50a156296041a13e0e380e upstream. index can be reused by other virtio device. Signed-off-by: weiping zhang <zhangweiping@didichuxing.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/virtio')
-rw-r--r--drivers/virtio/virtio.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index df598dd8c5c8..8097e30fb49b 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -268,6 +268,8 @@ int register_virtio_device(struct virtio_device *dev)
/* device_register() causes the bus infrastructure to look for a
* matching driver. */
err = device_register(&dev->dev);
+ if (err)
+ ida_simple_remove(&virtio_index_ida, dev->index);
out:
if (err)
add_status(dev, VIRTIO_CONFIG_S_FAILED);