> Subject: Re: [PATCH] net/mana: avoid the use of variable length array > > On Tue, Mar 04, 2025 at 04:37:32PM -0800, lon...@linuxonhyperv.com wrote: > > From: Long Li <lon...@microsoft.com> > > > > The pathname can be defined as name[MAX_PATH]. This makes the driver > > compilable using MSVC. > > > > Signed-off-by: Long Li <lon...@microsoft.com> > > --- > > drivers/net/mana/mana.c | 7 ++----- > > 1 file changed, 2 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c index > > c37c4e3444..d12dff6ce1 100644 > > --- a/drivers/net/mana/mana.c > > +++ b/drivers/net/mana/mana.c > > @@ -36,11 +36,8 @@ static rte_spinlock_t mana_shared_data_lock = > > RTE_SPINLOCK_INITIALIZER; > > > > /* Allocate a buffer on the stack and fill it with a printf format > > string. */ #define MANA_MKSTR(name, ...) \ > > - int mkstr_size_##name = snprintf(NULL, 0, "" __VA_ARGS__); \ > > - char name[mkstr_size_##name + 1]; \ > > - \ > > - memset(name, 0, mkstr_size_##name + 1); \ > > - snprintf(name, sizeof(name), "" __VA_ARGS__) > > + char name[PATH_MAX]; \ > > + snprintf(name, PATH_MAX, "" __VA_ARGS__) > > > > int mana_logtype_driver; > > int mana_logtype_init; > > -- > > 2.34.1 > > Did you try to remove the line below from mana/meson.build? > That line prevents the compiler from complain about VLAs. If the driver is > VLA- > free after this fix it would be great if the compiler was allowed to complain > about > VLAs (default in DPDK project). > > If the code still compiles without this line then it should be safe to remove > it: > > cflags += no_wvla_cflag > -- > Andre Muezerie
I tried, it gives warnings on other two places using VLA: [1688/3164] Compiling C object drivers/libtmp_rte_net_mana.a.p/net_mana_mr.c.o ../drivers/net/mana/mr.c: In function 'mana_new_pmd_mr': ../drivers/net/mana/mr.c:41:16: warning: ISO C90 forbids variable length array 'ranges' [-Wvla] 41 | struct mana_range ranges[pool->nb_mem_chunks]; | ^~~~~~~~~~ [1710/3164] Compiling C object drivers/libtmp_rte_net_mana.a.p/net_mana_rx.c.o ../drivers/net/mana/rx.c: In function 'mana_start_rx_queues': ../drivers/net/mana/rx.c:244:16: warning: ISO C90 forbids variable length array 'ind_tbl' [-Wvla] 244 | struct ibv_wq *ind_tbl[priv->num_queues]; | ^~~~~~ I'll fix them up and send a patch.