[PATCH v2 00/16] net/zxdh: updated net zxdh driver

Stephen Hemminger stephen at networkplumber.org
Mon Feb 24 16:31:47 CET 2025


On Mon, 24 Feb 2025 14:10:39 +0800
Junlong Wang <wang.junlong1 at zte.com.cn> wrote:

> Hi maintainer,
>     Do these warnings need to be resolved?

These warnings do need to be resolved, but not necessarily a blocker for inclusing now.

> 
>     The usage of this code is also supported by the standard C language,
No VLA is a GNU extension.

>     and other drivers also have this usage;
The DPDK maintainers are slowly eliminating them.

> 
>     At the same time, why does the compilation still have [- Wvla] warning
>     when adding cflags += no_wvla_cflag in zxdh meson.build

Right but MS C compiler does not support VLA's and VLA's not the whole tree
has been converted.

If you can fix it now, then that would be best. If not, then it will get
changed when other drivers are addressed.

> 
>     Thanks
> 
>     I will submit a new version that includes Enable assertions failed、
>     Enable address sanitizer for undefined checks、Extra memset and cast,
>     and [RFC,0/5] net/zxdh: possible changes you submited.
> 
>     and sorry for not modifying the cover scan and PVS issue in a timely manner.
>     I will make the necessary changes later
> 
> 
> >    ✘ Enable extra warnings (edit meson.build) for
> >        -Wvla, -Wformat-truncation, -Waddress-of-packed-member
> >
> >[1600/3244] Compiling C object drivers/libtmp_rte_net_zxdh.a.p/net_zxdh_zxdh_queue.c.o
> >.../drivers/net/zxdh/zxdh_queue.c: In function ‘zxdh_dev_rx_queue_setup_finish’:
> >.../drivers/net/zxdh/zxdh_queue.c:357:24: warning: ISO C90 forbids variable length array ‘new_pkts’ [-Wvla]
> >  357 |                 struct rte_mbuf *new_pkts[free_cnt];
> >      |                        ^~~~~~~~
> >[1603/3244] Compiling C object drivers/libtmp_rte_net_zxdh.a.p/net_zxdh_zxdh_rxtx.c.o
> >.../drivers/net/zxdh/zxdh_rxtx.c: In function ‘zxdh_recv_pkts_packed’:
> >.../drivers/net/zxdh/zxdh_rxtx.c:903:24: warning: ISO C90 forbids variable length array ‘new_pkts’ [-Wvla]
> >  903 |                 struct rte_mbuf *new_pkts[free_cnt];
> >      |                        ^~~~~~~~
> >[1616/3244] Compiling C object drivers/libtmp_rte_net_zxdh.a.p/net_zxdh_zxdh_ethdev_ops.c.o
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c: In function ‘zxdh_dev_xstats_get_names’:
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:1983:26: warning: ‘%s’ directive output may be truncated writing up to 1359 bytes into a region of size 64 [-Wformat-truncation=]
> > 1983 |                         "%s", zxdh_np_stat_strings[i].name);
> >      |                          ^~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:1982:25: note: ‘snprintf’ output between 1 and 1360 bytes into a destination of size 64
> > 1982 |                         snprintf(xstats_names[count].name, sizeof(xstats_names[count].name),
> >      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 1983 |                         "%s", zxdh_np_stat_strings[i].name);
> >      |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:1989:34: warning: ‘%s’ directive output may be truncated writing up to 2991 bytes into a region of size 64 [-Wformat-truncation=]
> > 1989 |                                 "%s", zxdh_mac_stat_strings[i].name);
> >      |                                  ^~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:1988:33: note: ‘snprintf’ output between 1 and 2992 bytes into a destination of size 64
> > 1988 |                                 snprintf(xstats_names[count].name, sizeof(xstats_names[count].name),
> >      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 1989 |                                 "%s", zxdh_mac_stat_strings[i].name);
> >      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:1994:34: warning: ‘%s’ directive output may be truncated writing up to 271 bytes into a region of size 64 [-Wformat-truncation=]
> > 1994 |                                 "%s", zxdh_mac_bytes_strings[i].name);
> >      |                                  ^~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:1993:33: note: ‘snprintf’ output between 1 and 272 bytes into a destination of size 64
> > 1993 |                                 snprintf(xstats_names[count].name, sizeof(xstats_names[count].name),
> >      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 1994 |                                 "%s", zxdh_mac_bytes_strings[i].name);
> >      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:2000:26: warning: ‘%s’ directive output may be truncated writing up to 339 bytes into a region of size 64 [-Wformat-truncation=]
> > 2000 |                         "%s", zxdh_vqm_stat_strings[i].name);
> >      |                          ^~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:1999:25: note: ‘snprintf’ output between 1 and 340 bytes into a destination of size 64
> > 1999 |                         snprintf(xstats_names[count].name, sizeof(xstats_names[count].name),
> >      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 2000 |                         "%s", zxdh_vqm_stat_strings[i].name);
> >      |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:2010:41: warning: ‘%s’ directive output may be truncated writing up to 1359 bytes into a region of size between 54 and 58 [-Wformat-truncation=]
> > 2010 |                                 "rx_q%u_%s", i, zxdh_rxq_stat_strings[t].name);
> >      |                                         ^~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:2009:33: note: ‘snprintf’ output between 7 and 1370 bytes into a destination of size 64
> > 2009 |                                 snprintf(xstats_names[count].name, sizeof(xstats_names[count].name),
> >      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 2010 |                                 "rx_q%u_%s", i, zxdh_rxq_stat_strings[t].name);
> >      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:2022:41: warning: ‘%s’ directive output may be truncated writing up to 1291 bytes into a region of size between 54 and 58 [-Wformat-truncation=]
> > 2022 |                                 "tx_q%u_%s", i, zxdh_txq_stat_strings[t].name);
> >      |                                         ^~
> >.../drivers/net/zxdh/zxdh_ethdev_ops.c:2021:33: note: ‘snprintf’ output between 7 and 1302 bytes into a destination of size 64
> > 2021 |                                 snprintf(xstats_names[count].name, sizeof(xstats_names[count].name),
> >      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 2022 |                                 "tx_q%u_%s", i, zxdh_txq_stat_strings[t].name);
> >      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  

I am not sure what causes this, it is likely that C compiler sees that the maximum possible value for i is quite
large and the stat_strings have large possible length. Not a big issue, but worth looking at.


More information about the dev mailing list