From patchwork Fri Feb 20 16:13:05 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maciej Gajdzica X-Patchwork-Id: 3558 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 33770B785; Fri, 20 Feb 2015 17:13:20 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 01FFBB71D for ; Fri, 20 Feb 2015 17:13:17 +0100 (CET) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP; 20 Feb 2015 08:09:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,615,1418112000"; d="scan'208";a="669152626" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga001.fm.intel.com with ESMTP; 20 Feb 2015 08:13:15 -0800 Received: from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com [10.237.217.45]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id t1KGDEht021047; Fri, 20 Feb 2015 16:13:14 GMT Received: from sivswdev01.ir.intel.com (localhost [127.0.0.1]) by sivswdev01.ir.intel.com with ESMTP id t1KGDE5w006054; Fri, 20 Feb 2015 16:13:14 GMT Received: (from mtgajdzx@localhost) by sivswdev01.ir.intel.com with id t1KGDExO006050; Fri, 20 Feb 2015 16:13:14 GMT From: Maciej Gajdzica To: dev@dpdk.org Date: Fri, 20 Feb 2015 16:13:05 +0000 Message-Id: <1424448785-5950-1-git-send-email-maciejx.t.gajdzica@intel.com> X-Mailer: git-send-email 1.7.4.1 Subject: [dpdk-dev] [PATCH] virtio: fixed possible data loss in function virtio_recv_mergeable_pkts 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" Variable rcv_cnt declared in function virtio_recv_mergeable_pkts was of type uint32_t. It was used by virtqueue_dequeue_burst_rx function, which expects argument of type uint16_t. Changed rcv_cnt variable type to uint16_t to prevent possible data loss. Issue found with static code analysis tool. Signed-off-by: Maciej Gajdzica --- lib/librte_pmd_virtio/virtio_rxtx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/librte_pmd_virtio/virtio_rxtx.c b/lib/librte_pmd_virtio/virtio_rxtx.c index 468e978..8fcad9b 100644 --- a/lib/librte_pmd_virtio/virtio_rxtx.c +++ b/lib/librte_pmd_virtio/virtio_rxtx.c @@ -602,7 +602,7 @@ virtio_recv_mergeable_pkts(void *rx_queue, /* * Get extra segments for current uncompleted packet. */ - uint32_t rcv_cnt = + uint16_t rcv_cnt = RTE_MIN(seg_res, RTE_DIM(rcv_pkts)); if (likely(VIRTQUEUE_NUSED(rxvq) >= rcv_cnt)) { uint32_t rx_num =