diff options
author | Jason Wang <jasowang@redhat.com> | 2021-09-03 17:10:20 +0800 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2021-09-04 17:34:05 -0400 |
commit | 74af5eec832f56d6565415d3bb879a75d5f80190 (patch) | |
tree | 5c96a190f26ea8daafb330602cffe832e17fff2f | |
parent | a97ef87a205ee957c367ebc7621bd9860ad6047d (diff) | |
download | 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.c | 5 |
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; } |