diff mbox series

[08/18] vhost-vdpa: fix the wrong assertion in vhost_vdpa_init()

Message ID 20210621041650.5826-9-jasowang@redhat.com (mailing list archive)
State New, archived
Headers show
Series vhost-vDPA multiqueue | expand

Commit Message

Jason Wang June 21, 2021, 4:16 a.m. UTC
Vhost_vdpa_add() can fail for various reasons, so the assertion of the
succeed is wrong. Instead, we should free the NetClientState and
propagate the error to the caller

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 net/vhost-vdpa.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Stefano Garzarella June 23, 2021, 3:04 p.m. UTC | #1
On Mon, Jun 21, 2021 at 12:16:40PM +0800, Jason Wang wrote:
>Vhost_vdpa_add() can fail for various reasons, so the assertion of the
>succeed is wrong. Instead, we should free the NetClientState and
>propagate the error to the caller
>
>Signed-off-by: Jason Wang <jasowang@redhat.com>
>---
> net/vhost-vdpa.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
>diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
>index 0da7bc347a..87b181a74e 100644
>--- a/net/vhost-vdpa.c
>+++ b/net/vhost-vdpa.c
>@@ -174,7 +174,10 @@ static int net_vhost_vdpa_init(NetClientState *peer, const char *device,
>     }
>     s->vhost_vdpa.device_fd = vdpa_device_fd;
>     ret = vhost_vdpa_add(nc, (void *)&s->vhost_vdpa);
>-    assert(s->vhost_net);
>+    if (ret) {
>+        qemu_close(vdpa_device_fd);
>+        qemu_del_net_client(nc);
>+    }

Okay, I see now :-)

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>

>     return ret;
> }
>
>-- 
>2.25.1
>
>
diff mbox series

Patch

diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
index 0da7bc347a..87b181a74e 100644
--- a/net/vhost-vdpa.c
+++ b/net/vhost-vdpa.c
@@ -174,7 +174,10 @@  static int net_vhost_vdpa_init(NetClientState *peer, const char *device,
     }
     s->vhost_vdpa.device_fd = vdpa_device_fd;
     ret = vhost_vdpa_add(nc, (void *)&s->vhost_vdpa);
-    assert(s->vhost_net);
+    if (ret) {
+        qemu_close(vdpa_device_fd);
+        qemu_del_net_client(nc);
+    }
     return ret;
 }