Hi Maxime, > -----Original Message----- > From: Maxime Coquelin <maxime.coque...@redhat.com> > Sent: Monday, December 21, 2020 5:14 AM > To: dev@dpdk.org; Xia, Chenbo <chenbo....@intel.com>; olivier.m...@6wind.com; > amore...@redhat.com; david.march...@redhat.com > Cc: Maxime Coquelin <maxime.coque...@redhat.com> > Subject: [PATCH 39/40] net/virtio: move Vhost-kernel data to its backend > > As done earlier for Vhost-user, this patch moves the > Vhost-Kernel specific data to its backend file. > > Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com> > --- > drivers/net/virtio/virtio_user/vhost_kernel.c | 78 +++++++++++++++---- > .../net/virtio/virtio_user/virtio_user_dev.c | 43 ++-------- > .../net/virtio/virtio_user/virtio_user_dev.h | 7 +- > 3 files changed, 72 insertions(+), 56 deletions(-) >
<snip> > @@ -339,19 +353,37 @@ static int > vhost_kernel_setup(struct virtio_user_dev *dev) > { > int vhostfd; > - uint32_t i; > + uint32_t q, i; > + struct vhost_kernel_data *data; > + > + data = malloc(sizeof(*data)); > + if (!data) { > + PMD_INIT_LOG(ERR, "(%s) Failed to allocate Vhost-kernel data", > dev->path); > + return -1; > + } > + > + data->vhostfds = malloc(dev->max_queue_pairs * sizeof(int)); > + data->tapfds = malloc(dev->max_queue_pairs * sizeof(int)); > + if (!data->vhostfds || !data->tapfds) { > + PMD_INIT_LOG(ERR, "(%s) Failed to allocate FDs", dev->path); > + return -1; > + } > + > + for (q = 0; q < dev->max_queue_pairs; ++q) { > + data->vhostfds[q] = -1; > + data->tapfds[q] = -1; > + } > > get_vhost_kernel_max_regions(); > > for (i = 0; i < dev->max_queue_pairs; ++i) { > vhostfd = open(dev->path, O_RDWR); > if (vhostfd < 0) { > - PMD_DRV_LOG(ERR, "fail to open %s, %s", > - dev->path, strerror(errno)); > + PMD_DRV_LOG(ERR, "fail to open %s, %s", dev->path, > strerror(errno)); > return -1; > } In this function, should we clean-up malloced resources when error happens? Thanks, Chenbo