Skip to content

Commit 32d7d57

Browse files
shemmingertmonjalo
authored andcommitted
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]> Acked-by: Konstantin Ananyev <[email protected]> Reviewed-by: Marat Khalili <[email protected]>
1 parent ecd42d8 commit 32d7d57

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

lib/bpf/bpf_pkt.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ apply_filter(struct rte_mbuf *mb[], const uint64_t rc[], uint32_t num,
163163
uint32_t drop)
164164
{
165165
uint32_t i, j, k;
166-
struct rte_mbuf *dr[num];
166+
struct rte_mbuf **dr = alloca(num * sizeof(struct rte_mbuf *));
167167

168168
for (i = 0, j = 0, k = 0; i != num; i++) {
169169

@@ -192,8 +192,8 @@ pkt_filter_vm(const struct rte_bpf *bpf, struct rte_mbuf *mb[], uint32_t num,
192192
uint32_t drop)
193193
{
194194
uint32_t i;
195-
void *dp[num];
196-
uint64_t rc[num];
195+
void **dp = alloca(num * sizeof(void *));
196+
uint64_t *rc = alloca(num * sizeof(uint64_t));
197197

198198
for (i = 0; i != num; i++)
199199
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[],
208208
{
209209
uint32_t i, n;
210210
void *dp;
211-
uint64_t rc[num];
211+
uint64_t *rc = alloca(num * sizeof(uint64_t));
212212

213213
n = 0;
214214
for (i = 0; i != num; i++) {
@@ -227,7 +227,7 @@ static inline uint32_t
227227
pkt_filter_mb_vm(const struct rte_bpf *bpf, struct rte_mbuf *mb[], uint32_t num,
228228
uint32_t drop)
229229
{
230-
uint64_t rc[num];
230+
uint64_t *rc = alloca(num * sizeof(uint64_t));
231231

232232
rte_bpf_exec_burst(bpf, (void **)mb, rc, num);
233233
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[],
238238
uint32_t num, uint32_t drop)
239239
{
240240
uint32_t i, n;
241-
uint64_t rc[num];
241+
uint64_t *rc = alloca(num * sizeof(uint64_t));
242242

243243
n = 0;
244244
for (i = 0; i != num; i++) {

0 commit comments

Comments
 (0)