summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Wang2021-09-03 11:10:20 +0200
committerMichael S. Tsirkin2021-09-04 23:34:05 +0200
commit74af5eec832f56d6565415d3bb879a75d5f80190 (patch)
tree5c96a190f26ea8daafb330602cffe832e17fff2f
parentvhost-vdpa: tweak the error label in vhost_vdpa_add() (diff)
downloadqemu-74af5eec832f56d6565415d3bb879a75d5f80190.tar.gz
qemu-74af5eec832f56d6565415d3bb879a75d5f80190.tar.xz
qemu-74af5eec832f56d6565415d3bb879a75d5f80190.zip
vhost-vdpa: fix the wrong assertion in vhost_vdpa_init()
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 Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Message-Id: <20210903091031.47303-11-jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r--net/vhost-vdpa.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
index 99327d17b4..d02cad9855 100644
--- a/net/vhost-vdpa.c
+++ b/net/vhost-vdpa.c
@@ -173,7 +173,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;
}