From mboxrd@z Thu Jan 1 00:00:00 1970 From: Damjan Marion Subject: [PATCH] virtio: fix crash if CQ is not negotiated Date: Mon, 25 May 2015 12:20:52 +0200 Message-ID: <1432549252-8630-1-git-send-email-damarion@cisco.com> Cc: Damjan Marion To: dev@dpdk.org Return-path: 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) 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 --- 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", -- 2.1.4