From: Pierre Pfister Date: Fri, 2 Dec 2016 10:55:13 +0000 (+0000) Subject: Fix dpdk_validate_rte-mbuf for chained buffers X-Git-Tag: v17.01-rc1~138 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=58290ea2f6364fdc6f0dd9c201d6d0b84025f3d3;p=vpp.git Fix dpdk_validate_rte-mbuf for chained buffers Change I4ad40f398f7b5cf introduced a bug with chained buffers. This patch should fix it. Change-Id: Ia409d5eb90fcd6d7ff3c7da0836edfd2eb25998b Signed-off-by: Pierre Pfister --- diff --git a/vnet/vnet/devices/dpdk/device.c b/vnet/vnet/devices/dpdk/device.c index 9f40c277b20..800a06caf13 100644 --- a/vnet/vnet/devices/dpdk/device.c +++ b/vnet/vnet/devices/dpdk/device.c @@ -160,12 +160,13 @@ dpdk_validate_rte_mbuf (vlib_main_t * vm, vlib_buffer_t * b, rte_mbuf header */ if (PREDICT_FALSE ((b->flags & VNET_BUFFER_RTE_MBUF_VALID) == 0)) { - last_mb = mb = rte_mbuf_from_vlib_buffer (b); + vlib_buffer_t *b2 = b; + last_mb = mb = rte_mbuf_from_vlib_buffer (b2); rte_pktmbuf_reset (mb); - while (maybe_multiseg && (b->flags & VLIB_BUFFER_NEXT_PRESENT)) + while (maybe_multiseg && (b2->flags & VLIB_BUFFER_NEXT_PRESENT)) { - b = vlib_get_buffer (vm, b->next_buffer); - mb = rte_mbuf_from_vlib_buffer (b); + b2 = vlib_get_buffer (vm, b2->next_buffer); + mb = rte_mbuf_from_vlib_buffer (b2); last_mb->next = mb; last_mb = mb; rte_pktmbuf_reset (mb);