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 <maciejx.t.gajdzica at intel.com>
---
 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 =
-- 
1.7.9.5

Reply via email to