[PATCH] net/mana: avoid the use of variable length array
Long Li
longli at microsoft.com
Thu Mar 6 23:01:57 CET 2025
> Subject: Re: [PATCH] net/mana: avoid the use of variable length array
>
> On Tue, Mar 04, 2025 at 04:37:32PM -0800, longli at linuxonhyperv.com wrote:
> > From: Long Li <longli at microsoft.com>
> >
> > The pathname can be defined as name[MAX_PATH]. This makes the driver
> > compilable using MSVC.
> >
> > Signed-off-by: Long Li <longli at 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.
More information about the dev
mailing list