> 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.

Reply via email to