DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Xia, Chenbo" <chenbo.xia@intel.com>
To: Maxime Coquelin <maxime.coquelin@redhat.com>,
	"dev@dpdk.org" <dev@dpdk.org>,
	"olivier.matz@6wind.com" <olivier.matz@6wind.com>,
	"amorenoz@redhat.com" <amorenoz@redhat.com>,
	"david.marchand@redhat.com" <david.marchand@redhat.com>
Subject: Re: [dpdk-dev] [PATCH v2 44/44] net/virtio: handle Virtio-user setup failure properly
Date: Fri, 22 Jan 2021 09:24:31 +0000
Message-ID: <MN2PR11MB406334B149B8E74FB9BAF17C9CA00@MN2PR11MB4063.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20210119212507.1043636-45-maxime.coquelin@redhat.com>

Hi Maxime,

> -----Original Message-----
> From: Maxime Coquelin <maxime.coquelin@redhat.com>
> Sent: Wednesday, January 20, 2021 5:25 AM
> To: dev@dpdk.org; Xia, Chenbo <chenbo.xia@intel.com>; olivier.matz@6wind.com;
> amorenoz@redhat.com; david.marchand@redhat.com
> Cc: Maxime Coquelin <maxime.coquelin@redhat.com>
> Subject: [PATCH v2 44/44] net/virtio: handle Virtio-user setup failure
> properly
> 
> This patch fixes virtio_user_dev_setup() error path,
> by cleaning all resources it allocates.
> 
> Suggested-by: Adrian Moreno <amorenoz@redhat.com>
> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> ---
>  drivers/net/virtio/virtio_user/virtio_user_dev.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c
> b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> index a1e32158bb..2f7dc574b6 100644
> --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
> +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> @@ -427,15 +427,22 @@ virtio_user_dev_setup(struct virtio_user_dev *dev)
> 
>  	if (virtio_user_dev_init_notify(dev) < 0) {
>  		PMD_INIT_LOG(ERR, "(%s) Failed to init notifiers\n", dev->path);
> -		return -1;
> +		goto destroy;
>  	}
> 
>  	if (virtio_user_fill_intr_handle(dev) < 0) {
>  		PMD_INIT_LOG(ERR, "(%s) Failed to init interrupt handler\n", dev-
> >path);
> -		return -1;
> +		goto uninit;
>  	}
> 
>  	return 0;
> +
> +uninit:
> +	virtio_user_dev_uninit(dev);

IMHO, it may not be the best choice to call virtio_user_dev_uninit here..

Logically when virtio_user_fill_intr_handle fails, we want to release the resources
which is allocated in virtio_user_dev_init_notify (i.e., fds), but virtio_user_dev_uninit
does more. For example, unregister the event callback that have not been registered yet and
it also leads to destroy callback called twice. Although things done but not needed will
not lead to error, but it looks not in the best way. What do you think?

Thanks,
Chenbo

> +destroy:
> +	dev->ops->destroy(dev);
> +
> +	return -1;
>  }
> 
>  /* Use below macro to filter features from vhost backend */
> --
> 2.29.2


  reply	other threads:[~2021-01-22  9:24 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-19 21:24 [dpdk-dev] [PATCH v2 00/44] net/virtio: Virtio PMD rework Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 01/44] bus/vdev: add helper to get vdev from eth dev Maxime Coquelin
2021-01-20  0:56   ` Thomas Monjalon
2021-01-25 10:53     ` Maxime Coquelin
2021-01-25 11:04       ` Thomas Monjalon
2021-01-21  8:58   ` Xia, Chenbo
2021-01-25 14:51     ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 02/44] bus/vdev: add driver IOVA VA mode requirement Maxime Coquelin
2021-01-20 15:32   ` David Marchand
2021-01-20 17:47     ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 03/44] net/virtio: fix getting old status on reconnect Maxime Coquelin
2021-01-21  7:12   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 04/44] net/virtio: introduce Virtio bus type Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 05/44] net/virtio: refactor virtio-user device Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 06/44] net/virtio: introduce PCI device metadata Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 07/44] net/virtio: move PCI device init in dedicated file Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 08/44] net/virtio: move PCI specific dev init to PCI ethdev init Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 09/44] net/virtio: move MSIX detection to PCI ethdev Maxime Coquelin
2021-01-21  7:12   ` Xia, Chenbo
2021-01-25 12:41     ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 10/44] net/virtio: force IOVA as VA mode for Virtio-user Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 11/44] net/virtio: store PCI type in Virtio device metadata Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 12/44] net/virtio: add callback for device closing Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 13/44] net/virtio: validate features at bus level Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 14/44] net/virtio: remove bus type enum Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 15/44] net/virtio: move PCI-specific fields to PCI device Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 16/44] net/virtio: pack virtio HW struct Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 17/44] net/virtio: move legacy IO to Virtio PCI Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 18/44] net/virtio: introduce generic virtio header Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 19/44] net/virtio: move features definition to generic header Maxime Coquelin
2021-01-21  6:47   ` Xia, Chenbo
2021-01-25 12:35     ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 20/44] net/virtio: move virtqueue defines in " Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 21/44] net/virtio: move config definitions to " Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 22/44] net/virtio: make interrupt handling more generic Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 23/44] net/virtio: move vring alignment to generic header Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 24/44] net/virtio: remove last PCI refs in non-PCI code Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 25/44] net/virtio: make Vhost-user req sender consistent Maxime Coquelin
2021-01-21  8:50   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 26/44] net/virtio: add Virtio-user ops to set owner Maxime Coquelin
2021-01-22  3:27   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 27/44] net/virtio: add Virtio-user features ops Maxime Coquelin
2021-01-22  7:25   ` Xia, Chenbo
2021-01-25 14:53     ` Maxime Coquelin
2021-01-22  8:46   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 28/44] net/virtio: add Virtio-user protocol " Maxime Coquelin
2021-01-22  7:27   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 29/44] net/virtio: add Virtio-user memory tables ops Maxime Coquelin
2021-01-22  7:34   ` Xia, Chenbo
2021-01-25 14:56     ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 30/44] net/virtio: add Virtio-user vring setting ops Maxime Coquelin
2021-01-22  7:49   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 31/44] net/virtio: add Virtio-user vring file ops Maxime Coquelin
2021-01-22  8:01   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 32/44] net/virtio: add Virtio-user vring address ops Maxime Coquelin
2021-01-22  8:02   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 33/44] net/virtio: add Virtio-user status ops Maxime Coquelin
2021-01-22  8:02   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 34/44] net/virtio: remove useless request ops Maxime Coquelin
2021-01-22  8:10   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 35/44] net/virtio: improve Virtio-user errors handling Maxime Coquelin
2021-01-22  8:10   ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 36/44] net/virtio: move Vhost-user reqs to Vhost-user backend Maxime Coquelin
2021-01-21  8:56   ` Xia, Chenbo
2021-01-25 14:50     ` Maxime Coquelin
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 37/44] net/virtio: make server mode blocking Maxime Coquelin
2021-01-22  8:19   ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 38/44] net/virtio: move protocol features to Vhost-user Maxime Coquelin
2021-01-22  8:20   ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 39/44] net/virtio: introduce backend data Maxime Coquelin
2021-01-22  8:26   ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 40/44] net/virtio: move Vhost-user specifics to its backend Maxime Coquelin
2021-01-22  8:49   ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 41/44] net/virtio: move Vhost-kernel data " Maxime Coquelin
2021-01-22  8:55   ` Xia, Chenbo
2021-01-25 14:59     ` Maxime Coquelin
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 42/44] net/virtio: move Vhost-vDPA " Maxime Coquelin
2021-01-22  9:06   ` Xia, Chenbo
2021-01-25 15:02     ` Maxime Coquelin
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 43/44] net/virtio: improve Vhost-user error logging Maxime Coquelin
2021-01-22  9:11   ` Xia, Chenbo
2021-01-25 15:04     ` Maxime Coquelin
2021-01-26  6:10       ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 44/44] net/virtio: handle Virtio-user setup failure properly Maxime Coquelin
2021-01-22  9:24   ` Xia, Chenbo [this message]
2021-01-25 16:16     ` Maxime Coquelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MN2PR11MB406334B149B8E74FB9BAF17C9CA00@MN2PR11MB4063.namprd11.prod.outlook.com \
    --to=chenbo.xia@intel.com \
    --cc=amorenoz@redhat.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=maxime.coquelin@redhat.com \
    --cc=olivier.matz@6wind.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git