On Tue, Nov 27, 2018 at 10:23:25AM +0100, Maxime Coquelin wrote: > If mmap() call fails in vhost_user_set_mem_table, dev->mem > is set to NULL. If later, qva_to_vva() is called, a segfault > occurs. > > Fixes: 8f972312b8f4 ("vhost: support vhost-user") > Cc: sta...@dpdk.org > > Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com> > --- > lib/librte_vhost/vhost_user.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c > index 3ea64eba6..c44fef9cc 100644 > --- a/lib/librte_vhost/vhost_user.c > +++ b/lib/librte_vhost/vhost_user.c > @@ -489,6 +489,9 @@ qva_to_vva(struct virtio_net *dev, uint64_t qva, uint64_t > *len) > struct rte_vhost_mem_region *r; > uint32_t i; > > + if (unlikely(!dev || !dev->mem)) > + return 0;
Better to also zero *len. Reviewed-by: Tiwei Bie <tiwei....@intel.com> > + > /* Find the region where the address lives. */ > for (i = 0; i < dev->mem->nregions; i++) { > r = &dev->mem->regions[i]; > -- > 2.17.2 >