From 955703a95ec91a5d901f8fee2a92adf9014afab8 Mon Sep 17 00:00:00 2001 From: Jiaqing Zhao Date: Wed, 5 Jul 2023 02:24:55 +0000 Subject: [PATCH] dm: fix NULL pointer dereference risk in vhost vsock Pointer 'vsock->vhost_vsock' returned from call to function 'vhost_vsock_init' may be NULL and will be dereferenced when calling 'vhost_vsock_set_guest_cid()'. Tracked-On: #8439 Signed-off-by: Yonghua Huang Signed-off-by: Jiaqing Zhao Reviewed-by: Jian Jun Chen --- devicemodel/hw/pci/virtio/vhost_vsock.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/devicemodel/hw/pci/virtio/vhost_vsock.c b/devicemodel/hw/pci/virtio/vhost_vsock.c index 563505c25..4d944a733 100644 --- a/devicemodel/hw/pci/virtio/vhost_vsock.c +++ b/devicemodel/hw/pci/virtio/vhost_vsock.c @@ -298,14 +298,16 @@ virtio_vhost_vsock_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts) virtio_set_modern_bar(&vsock->base, false); vsock->vhost_vsock = vhost_vsock_init(&vsock->base, 0); + if (!vsock->vhost_vsock) { + pr_err("vhost vosck init failed."); + free(vsock); + return -1; + } vhost_vsock_set_guest_cid(&vsock->vhost_vsock->vdev, vsock->config.guest_cid); if (virtio_interrupt_init(&vsock->base, virtio_uses_msix())) { - if (vsock) { - if (vsock->vhost_vsock) - vhost_vsock_deinit(vsock->vhost_vsock); - free(vsock); - } + vhost_vsock_deinit(vsock->vhost_vsock); + free(vsock); return -1; } return 0;