Merge tag 'char-misc-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregk...
[linux-2.6-block.git] / drivers / misc / vmw_vmci / vmci_guest.c
index c61e8953511dec5db1aa988f613c3dd124ed686b..476af89e751b9b680b16770b7cab281ebc9f05f3 100644 (file)
@@ -625,7 +625,8 @@ static int vmci_guest_probe_device(struct pci_dev *pdev,
        if (!vmci_dev) {
                dev_err(&pdev->dev,
                        "Can't allocate memory for VMCI device\n");
-               return -ENOMEM;
+               error = -ENOMEM;
+               goto err_unmap_mmio_base;
        }
 
        vmci_dev->dev = &pdev->dev;
@@ -642,7 +643,8 @@ static int vmci_guest_probe_device(struct pci_dev *pdev,
                if (!vmci_dev->tx_buffer) {
                        dev_err(&pdev->dev,
                                "Can't allocate memory for datagram tx buffer\n");
-                       return -ENOMEM;
+                       error = -ENOMEM;
+                       goto err_unmap_mmio_base;
                }
 
                vmci_dev->data_buffer = dma_alloc_coherent(&pdev->dev, VMCI_DMA_DG_BUFFER_SIZE,
@@ -892,6 +894,10 @@ err_free_notification_bitmap:
 err_free_data_buffers:
        vmci_free_dg_buffers(vmci_dev);
 
+err_unmap_mmio_base:
+       if (mmio_base != NULL)
+               pci_iounmap(pdev, mmio_base);
+
        /* The rest are managed resources and will be freed by PCI core */
        return error;
 }