vdpa: Fix an error handling path in eni_vdpa_probe()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Thu, 20 Oct 2022 19:21:09 +0000 (21:21 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:35:54 +0000 (15:35 -0800)
[ Upstream commit c1b9f2c66eed3261db76cccd8a22a9affae8dcbf ]

After a successful vp_legacy_probe() call, vp_legacy_remove() should be
called in the error handling path, as already done in the remove function.

Add the missing call.

Fixes: e85087beedca ("eni_vdpa: add vDPA driver for Alibaba ENI")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Message-Id: <a7b0ef1eabd081f1c7c894e9b11de01678e85dee.1666293559.git.christophe.jaillet@wanadoo.fr>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/vdpa/alibaba/eni_vdpa.c

index 5a09a09..cce3d18 100644 (file)
@@ -497,7 +497,7 @@ static int eni_vdpa_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        if (!eni_vdpa->vring) {
                ret = -ENOMEM;
                ENI_ERR(pdev, "failed to allocate virtqueues\n");
-               goto err;
+               goto err_remove_vp_legacy;
        }
 
        for (i = 0; i < eni_vdpa->queues; i++) {
@@ -509,11 +509,13 @@ static int eni_vdpa_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        ret = vdpa_register_device(&eni_vdpa->vdpa, eni_vdpa->queues);
        if (ret) {
                ENI_ERR(pdev, "failed to register to vdpa bus\n");
-               goto err;
+               goto err_remove_vp_legacy;
        }
 
        return 0;
 
+err_remove_vp_legacy:
+       vp_legacy_remove(&eni_vdpa->ldev);
 err:
        put_device(&eni_vdpa->vdpa.dev);
        return ret;