Replace variable length array with alloca.

Signed-off-by: Stephen Hemminger <step...@networkplumber.org>
---
 lib/pdump/meson.build |  2 --
 lib/pdump/rte_pdump.c | 12 ++++++++----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/lib/pdump/meson.build b/lib/pdump/meson.build
index 553dfdd5e6..da8d51b616 100644
--- a/lib/pdump/meson.build
+++ b/lib/pdump/meson.build
@@ -7,8 +7,6 @@ if is_windows
     subdir_done()
 endif
 
-cflags += no_wvla_cflag
-
 sources = files('rte_pdump.c')
 headers = files('rte_pdump.h')
 deps += ['ethdev', 'bpf', 'pcapng']
diff --git a/lib/pdump/rte_pdump.c b/lib/pdump/rte_pdump.c
index b95f7f863d..d201997b75 100644
--- a/lib/pdump/rte_pdump.c
+++ b/lib/pdump/rte_pdump.c
@@ -144,17 +144,21 @@ pdump_copy(uint16_t port_id, uint16_t queue,
        unsigned int i;
        int ring_enq;
        uint16_t d_pkts = 0;
-       struct rte_mbuf *dup_bufs[nb_pkts];
+       struct rte_mbuf **dup_bufs;
        struct rte_ring *ring;
        struct rte_mempool *mp;
        struct rte_mbuf *p;
-       uint64_t rcs[nb_pkts];
+       uint64_t *rcs = NULL;
 
-       if (cbs->filter)
+       if (cbs->filter) {
+               rcs = alloca(sizeof(uint64_t) * nb_pkts);
                rte_bpf_exec_burst(cbs->filter, (void **)pkts, rcs, nb_pkts);
+       }
 
        ring = cbs->ring;
        mp = cbs->mp;
+       dup_bufs = alloca(sizeof(struct rte_mbuf *) * nb_pkts);
+
        for (i = 0; i < nb_pkts; i++) {
                /*
                 * This uses same BPF return value convention as socket filter
@@ -162,7 +166,7 @@ pdump_copy(uint16_t port_id, uint16_t queue,
                 * if program returns zero
                 * then packet doesn't match the filter (will be ignored).
                 */
-               if (cbs->filter && rcs[i] == 0) {
+               if (rcs != NULL && rcs[i] == 0) {
                        rte_atomic_fetch_add_explicit(&stats->filtered,
                                           1, rte_memory_order_relaxed);
                        continue;
-- 
2.47.2

Reply via email to