From patchwork Mon May 25 10:20:52 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Damjan Marion (damarion)" X-Patchwork-Id: 4871 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 3AD2B1DB1; Mon, 25 May 2015 12:20:57 +0200 (CEST) Received: from aer-iport-1.cisco.com (aer-iport-1.cisco.com [173.38.203.51]) by dpdk.org (Postfix) with ESMTP id 4C959E62 for ; Mon, 25 May 2015 12:20:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=1062; q=dns/txt; s=iport; t=1432549255; x=1433758855; h=from:to:cc:subject:date:message-id; bh=mRLiMMn00TcQjMfGS9osjWc4DjyKkIl4QUTmO0LsR6I=; b=mBRhifh76c3b68VLB3gW1pYORmNWmmJHF3OkuKOgFIzbRmB4hUSC9epG SzDsm7t846x6hvtFRtVOGyhdOkZUxW9TTSc5H/h+dx+LJMKEZnhNaL16L 94zlMgtCqIEKquUbjX/SrftC+UOE8296NWqi1ao4GGGLYq9baHikMLugi M=; X-IronPort-AV: E=Sophos;i="5.13,491,1427760000"; d="scan'208";a="513606433" Received: from aer-iport-nat.cisco.com (HELO aer-core-2.cisco.com) ([173.38.203.22]) by aer-iport-1.cisco.com with ESMTP; 25 May 2015 10:20:54 +0000 Received: from proteus.cisco.com (proteus.cisco.com [10.55.15.254]) by aer-core-2.cisco.com (8.14.5/8.14.5) with ESMTP id t4PAKsPg028126; Mon, 25 May 2015 10:20:54 GMT From: Damjan Marion To: dev@dpdk.org Date: Mon, 25 May 2015 12:20:52 +0200 Message-Id: <1432549252-8630-1-git-send-email-damarion@cisco.com> X-Mailer: git-send-email 2.1.4 Cc: Damjan Marion Subject: [dpdk-dev] [PATCH] virtio: fix crash if CQ is not negotiated 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Fix NULL dereference if virtio control queue is not negotiated. Signed-off-by: Damjan Marion Acked-by: Stephen Hemminger --- drivers/net/virtio/virtio_ethdev.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index f74e413..3633fce 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -114,19 +114,20 @@ static int virtio_send_command(struct virtqueue *vq, struct virtio_pmd_ctrl *ctrl, int *dlen, int pkt_num) { - uint16_t head = vq->vq_desc_head_idx, i; + uint32_t head, i; int k, sum = 0; virtio_net_ctrl_ack status = ~0; struct virtio_pmd_ctrl result; ctrl->status = status; - if (!vq->hw->cvq) { + if (!(vq && vq->hw->cvq)) { PMD_INIT_LOG(ERR, "%s(): Control queue is not supported.", __func__); return -1; } + head = vq->vq_desc_head_idx; PMD_INIT_LOG(DEBUG, "vq->vq_desc_head_idx = %d, status = %d, " "vq->hw->cvq = %p vq = %p",