vdpa: Fix an error handling path in eni_vdpa_probe()

Message ID a7b0ef1eabd081f1c7c894e9b11de01678e85dee.1666293559.git.christophe.jaillet@wanadoo.fr
State New
Headers
Series vdpa: Fix an error handling path in eni_vdpa_probe() |

Commit Message

Christophe JAILLET Oct. 20, 2022, 7:21 p.m. UTC
  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>
---
 drivers/vdpa/alibaba/eni_vdpa.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Comments

Christophe JAILLET Dec. 7, 2023, 9:13 p.m. UTC | #1
Le 20/10/2022 à 21:21, Christophe JAILLET a écrit :
> 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>
> ---
>   drivers/vdpa/alibaba/eni_vdpa.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/vdpa/alibaba/eni_vdpa.c b/drivers/vdpa/alibaba/eni_vdpa.c
> index 5a09a09cca70..cce3d1837104 100644
> --- a/drivers/vdpa/alibaba/eni_vdpa.c
> +++ b/drivers/vdpa/alibaba/eni_vdpa.c
> @@ -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;

Polite reminder on a (very) old patch.

CJ
  
Michael S. Tsirkin Dec. 8, 2023, 11:35 a.m. UTC | #2
On Thu, Dec 07, 2023 at 10:13:51PM +0100, Christophe JAILLET wrote:
> Le 20/10/2022 à 21:21, Christophe JAILLET a écrit :
> > 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>
> > ---
> >   drivers/vdpa/alibaba/eni_vdpa.c | 6 ++++--
> >   1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/vdpa/alibaba/eni_vdpa.c b/drivers/vdpa/alibaba/eni_vdpa.c
> > index 5a09a09cca70..cce3d1837104 100644
> > --- a/drivers/vdpa/alibaba/eni_vdpa.c
> > +++ b/drivers/vdpa/alibaba/eni_vdpa.c
> > @@ -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;
> 
> Polite reminder on a (very) old patch.
> 
> CJ


Tagged now, thanks!
  
Jason Wang Dec. 20, 2023, 4:01 a.m. UTC | #3
On Fri, Dec 8, 2023 at 5:14 AM Christophe JAILLET
<christophe.jaillet@wanadoo.fr> wrote:
>
> Le 20/10/2022 à 21:21, Christophe JAILLET a écrit :
> > 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>
> > ---
> >   drivers/vdpa/alibaba/eni_vdpa.c | 6 ++++--
> >   1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/vdpa/alibaba/eni_vdpa.c b/drivers/vdpa/alibaba/eni_vdpa.c
> > index 5a09a09cca70..cce3d1837104 100644
> > --- a/drivers/vdpa/alibaba/eni_vdpa.c
> > +++ b/drivers/vdpa/alibaba/eni_vdpa.c
> > @@ -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;
>
> Polite reminder on a (very) old patch.

Acked-by: Jason Wang <jasowang@redhat.com>

Thanks

>
> CJ
>
  

Patch

diff --git a/drivers/vdpa/alibaba/eni_vdpa.c b/drivers/vdpa/alibaba/eni_vdpa.c
index 5a09a09cca70..cce3d1837104 100644
--- a/drivers/vdpa/alibaba/eni_vdpa.c
+++ b/drivers/vdpa/alibaba/eni_vdpa.c
@@ -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;