Message ID | 20200331075910.42529-1-sgarzare@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vhost-vsock: fix double close() in the realize() error path | expand |
On Tue, Mar 31, 2020 at 09:59:10AM +0200, Stefano Garzarella wrote: > vhost_dev_cleanup() closes the vhostfd parameter passed to > vhost_dev_init(), so this patch avoids closing it twice in > the vhost_vsock_device_realize() error path. > > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> > --- > hw/virtio/vhost-vsock.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c index 9f9093e196..09b6b07f94 100644 --- a/hw/virtio/vhost-vsock.c +++ b/hw/virtio/vhost-vsock.c @@ -364,12 +364,16 @@ static void vhost_vsock_device_realize(DeviceState *dev, Error **errp) err_vhost_dev: vhost_dev_cleanup(&vsock->vhost_dev); + /* vhost_dev_cleanup() closes the vhostfd passed to vhost_dev_init() */ + vhostfd = -1; err_virtio: virtio_delete_queue(vsock->recv_vq); virtio_delete_queue(vsock->trans_vq); virtio_delete_queue(vsock->event_vq); virtio_cleanup(vdev); - close(vhostfd); + if (vhostfd >= 0) { + close(vhostfd); + } return; }
vhost_dev_cleanup() closes the vhostfd parameter passed to vhost_dev_init(), so this patch avoids closing it twice in the vhost_vsock_device_realize() error path. Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> --- hw/virtio/vhost-vsock.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)