From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 33EFD9ABB for ; Mon, 20 Jun 2016 08:18:06 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 19 Jun 2016 23:18:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,496,1459839600"; d="scan'208";a="979399609" Received: from yliu-dev.sh.intel.com (HELO yliu-dev) ([10.239.67.162]) by orsmga001.jf.intel.com with ESMTP; 19 Jun 2016 23:18:04 -0700 Date: Mon, 20 Jun 2016 14:18:57 +0800 From: Yuanhan Liu To: Huawei Xie Cc: dev@dpdk.org, yuanhan.liu@intel.com, michalx.k.jastrzebski@intel.com Message-ID: <20160620061857.GD23111@yliu-dev.sh.intel.com> References: <1465950765-53868-1-git-send-email-huawei.xie@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1465950765-53868-1-git-send-email-huawei.xie@intel.com> User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] [PATCH] vhost: fix dereference null return value X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jun 2016 06:18:06 -0000 On Wed, Jun 15, 2016 at 08:32:45AM +0800, Huawei Xie wrote: > fixes the following coverity issues: > CID 107118 (#1 of 1): Dereference null return value (NULL_RETURNS) > CID 119262 (#1 of 1): Dereference null return value (NULL_RETURNS) > > Fixes: 8f972312b8f4 ("vhost: support vhost-user") > Fixes: 77d20126b4c2 ("vhost-user: handle message to enable vring") > > Signed-off-by: Huawei Xie > --- > lib/librte_vhost/vhost_user/virtio-net-user.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/lib/librte_vhost/vhost_user/virtio-net-user.c b/lib/librte_vhost/vhost_user/virtio-net-user.c > index 5803182..5844a42 100644 > --- a/lib/librte_vhost/vhost_user/virtio-net-user.c > +++ b/lib/librte_vhost/vhost_user/virtio-net-user.c > @@ -283,6 +283,9 @@ user_set_vring_kick(struct vhost_device_ctx ctx, struct VhostUserMsg *pmsg) > struct vhost_vring_file file; > struct virtio_net *dev = get_device(ctx); > > + if (!dev) > + return; > + I just found that it's been fixed by commit a03aabf2e8d6 ("vhost: export vid as the only interface to applications"), "accidentally". > file.index = pmsg->payload.u64 & VHOST_USER_VRING_IDX_MASK; > if (pmsg->payload.u64 & VHOST_USER_VRING_NOFD_MASK) > file.fd = VIRTIO_INVALID_EVENTFD; > @@ -306,8 +309,9 @@ user_get_vring_base(struct vhost_device_ctx ctx, > { > struct virtio_net *dev = get_device(ctx); > > - if (dev == NULL) > + if (!dev) > return -1; What's that for? Interestingly, if you look at the DPDK coding style, you will find that it's encouraged to use "dev == NULL" check instead of the "!dev" check. I sometimes uses both though. So, I don't think it's a big deal, and I will leave it as it is. > + > /* We have to stop the queue (virtio) if it is running. */ > if (dev->flags & VIRTIO_DEV_RUNNING) > notify_ops->destroy_device(dev); > @@ -341,6 +345,9 @@ user_set_vring_enable(struct vhost_device_ctx ctx, > struct virtio_net *dev = get_device(ctx); > int enable = (int)state->num; > > + if (!dev) > + return -1; > + It's been fixed by commit 590a936287c6 ("vhost: fix null pointer dereference"). So, sorry, I will NACK this patch. --yliu