> -----Original Message----- > From: Stephen Hemminger <[email protected]> > Sent: Tuesday 4 November 2025 16:08 > To: [email protected] > Cc: Stephen Hemminger <[email protected]>; Konstantin Ananyev > <[email protected]> > Subject: [PATCH v4 5/5] bpf: replace use of VLA > > Variable length arrays are extension not required in C standard > and not available in Windows. > Use alloca() instead of variable length array. > > Signed-off-by: Stephen Hemminger <[email protected]> > --- > lib/bpf/bpf_pkt.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/lib/bpf/bpf_pkt.c b/lib/bpf/bpf_pkt.c > index 087ac0f244..5007f6aef5 100644 > --- a/lib/bpf/bpf_pkt.c > +++ b/lib/bpf/bpf_pkt.c > @@ -163,7 +163,7 @@ apply_filter(struct rte_mbuf *mb[], const uint64_t rc[], > uint32_t num, > uint32_t drop) > { > uint32_t i, j, k; > - struct rte_mbuf *dr[num]; > + struct rte_mbuf **dr = alloca(num * sizeof(struct rte_mbuf *)); > > for (i = 0, j = 0, k = 0; i != num; i++) { > > @@ -192,8 +192,8 @@ pkt_filter_vm(const struct rte_bpf *bpf, struct rte_mbuf > *mb[], uint32_t num, > uint32_t drop) > { > uint32_t i; > - void *dp[num]; > - uint64_t rc[num]; > + void **dp = alloca(num * sizeof(void *)); > + uint64_t *rc = alloca(num * sizeof(uint64_t)); > > for (i = 0; i != num; i++) > dp[i] = rte_pktmbuf_mtod(mb[i], void *); > @@ -208,7 +208,7 @@ pkt_filter_jit(const struct rte_bpf_jit *jit, struct > rte_mbuf *mb[], > { > uint32_t i, n; > void *dp; > - uint64_t rc[num]; > + uint64_t *rc = alloca(num * sizeof(uint64_t)); > > n = 0; > for (i = 0; i != num; i++) { > @@ -227,7 +227,7 @@ static inline uint32_t > pkt_filter_mb_vm(const struct rte_bpf *bpf, struct rte_mbuf *mb[], uint32_t > num, > uint32_t drop) > { > - uint64_t rc[num]; > + uint64_t *rc = alloca(num * sizeof(uint64_t)); > > rte_bpf_exec_burst(bpf, (void **)mb, rc, num); > return apply_filter(mb, rc, num, drop); > @@ -238,7 +238,7 @@ pkt_filter_mb_jit(const struct rte_bpf_jit *jit, struct > rte_mbuf *mb[], > uint32_t num, uint32_t drop) > { > uint32_t i, n; > - uint64_t rc[num]; > + uint64_t *rc = alloca(num * sizeof(uint64_t)); > > n = 0; > for (i = 0; i != num; i++) { > -- > 2.51.0
Reviewed-by: Marat Khalili <[email protected]>

