On 2015/08/12 17:02, Ouyang Changchun wrote: > diff --git a/lib/librte_vhost/vhost_user/virtio-net-user.h > b/lib/librte_vhost/vhost_user/virtio-net-user.h > index df24860..2429836 100644 > --- a/lib/librte_vhost/vhost_user/virtio-net-user.h > +++ b/lib/librte_vhost/vhost_user/virtio-net-user.h > @@ -46,4 +46,6 @@ void user_set_vring_kick(struct vhost_device_ctx, struct > VhostUserMsg *); > > /* > @@ -206,9 +213,17 @@ cleanup_device(struct virtio_net *dev) > static void > free_device(struct virtio_net_config_ll *ll_dev) > { > - /* Free any malloc'd memory */ > - rte_free(ll_dev->dev.virtqueue[VIRTIO_RXQ]); > - rte_free(ll_dev->dev.virtqueue[VIRTIO_TXQ]); > + uint32_t qp_idx; > + > + /* > + * Free any malloc'd memory. > + */ > + /* Free every queue pair. */ > + for (qp_idx = 0; qp_idx < ll_dev->dev.virt_qp_nb; qp_idx++) { > + uint32_t virt_rx_q_idx = qp_idx * VIRTIO_QNUM + VIRTIO_RXQ; > + rte_free(ll_dev->dev.virtqueue[virt_rx_q_idx]);
Hi Changchun, Should we free tx queue also here? Thanks, Tetsuya > + } > + rte_free(ll_dev->dev.virtqueue); > rte_free(ll_dev); > } > >