From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 92F6B5B32; Thu, 15 Mar 2018 10:45:20 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Mar 2018 02:45:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,310,1517904000"; d="scan'208";a="25460401" Received: from dpdk9.bj.intel.com ([172.16.182.183]) by orsmga008.jf.intel.com with ESMTP; 15 Mar 2018 02:45:17 -0700 From: zhiyong.yang@intel.com To: dev@dpdk.org Cc: maxime.coquelin@redhat.com, jianfeng.tan@intel.com, dong1.wang@intel.com, zhihong.wang@intel.com, thomas@monjalon.net, stable@dpdk.org, Zhiyong Yang Date: Thu, 15 Mar 2018 17:45:10 +0800 Message-Id: <20180315094514.50417-2-zhiyong.yang@intel.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180315094514.50417-1-zhiyong.yang@intel.com> References: <20180214145330.4679-2-zhiyong.yang@intel.com> <20180315094514.50417-1-zhiyong.yang@intel.com> Subject: [dpdk-dev] [PATCH v2 1/5] net/virtio: fix add pointer checking X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Mar 2018 09:45:21 -0000 It is necessary to add pointer checking because in some case the code will cause crash. For example, The code goes here before memory allocation of rxvq is done. Fixes: 7365504f77e3("net/virtio: support guest announce") Cc: stable@dpdk.org Signed-off-by: Zhiyong Yang --- drivers/net/virtio/virtio_ethdev.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 884f74ad0..b38582c8d 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1273,9 +1273,14 @@ static void virtio_notify_peers(struct rte_eth_dev *dev) { struct virtio_hw *hw = dev->data->dev_private; - struct virtnet_rx *rxvq = dev->data->rx_queues[0]; + struct virtnet_rx *rxvq; struct rte_mbuf *rarp_mbuf; + if (!dev->data->rx_queues) + return; + + rxvq = dev->data->rx_queues[0]; + rarp_mbuf = rte_net_make_rarp_packet(rxvq->mpool, (struct ether_addr *)hw->mac_addr); if (rarp_mbuf == NULL) { -- 2.14.3