From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 7CA9310CEB; Thu, 22 Dec 2016 08:16:56 +0100 (CET) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga104.fm.intel.com with ESMTP; 21 Dec 2016 23:16:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,387,1477983600"; d="scan'208";a="45905280" Received: from yliu-dev.sh.intel.com ([10.239.67.162]) by fmsmga006.fm.intel.com with ESMTP; 21 Dec 2016 23:16:55 -0800 From: Yuanhan Liu To: dev@dpdk.org Cc: Yaron Illouz , Yuanhan Liu , stable@dpdk.org Date: Thu, 22 Dec 2016 15:18:41 +0800 Message-Id: <1482391123-8149-2-git-send-email-yuanhan.liu@linux.intel.com> X-Mailer: git-send-email 1.9.0 In-Reply-To: <1482391123-8149-1-git-send-email-yuanhan.liu@linux.intel.com> References: <1482391123-8149-1-git-send-email-yuanhan.liu@linux.intel.com> Subject: [dpdk-dev] [PATCH 1/3] net/virtio: fix crash for secondary process 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, 22 Dec 2016 07:16:57 -0000 If a virtio net device is managed by kernel driver, the primary process would be aware of it and skip it. For secondary process, however, it isn't aware of that. Instead, the 'hw' would be NULL. If we keep going on with the rx_func_get(), a crash would happen. For such case, we simply return 1 to let EAL skip this device. Thus, the crashed could be fixed. Fixes: c1f86306a026 ("virtio: add new driver") Cc: stable@dpdk.org Signed-off-by: Yuanhan Liu --- drivers/net/virtio/virtio_ethdev.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 079fd6c..f2a803b 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1304,6 +1304,15 @@ static int virtio_dev_xstats_get_names(struct rte_eth_dev *dev, eth_dev->tx_pkt_burst = &virtio_xmit_pkts; if (rte_eal_process_type() == RTE_PROC_SECONDARY) { + /* + * if a virtio net device is managed by kernel driver, + * the secondary process won't be aware of it. Instead, + * it sees hw being set with NULL. For such case, here + * we returns 1 to let EAL skip this device. + */ + if (!hw) + return 1; + rx_func_get(eth_dev); return 0; } -- 1.9.0