[v1] examples/ntb: fix build issue with GCC 13
Checks
Commit Message
From: Jerin Jacob <jerinj@marvell.com>
Fix the following build issue by not allowing nb_ids to be zero.
nb_ids can be zero based on rte_rawdev_xstats_get() API
documentation but it is not valid for the case when second
argument is NULL.
examples/ntb/ntb_fwd.c: In function 'ntb_stats_display':
examples/ntb/ntb_fwd.c:945:23: error: 'rte_rawdev_xstats_get'
accessing 8 bytes in a region of size 0 [-Werror=stringop-overflow=]
945 | if (nb_ids != rte_rawdev_xstats_get(dev_id, ids, values, nb_ids)) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
examples/ntb/ntb_fwd.c:945:23: note: referencing argument 3
of type 'uint64_t[0]' {aka 'long unsigned int[]'}
In file included from ../examples/ntb/ntb_fwd.c:17:
lib/rawdev/rte_rawdev.h:504:1: note: in a call to function
'rte_rawdev_xstats_get'
504 | rte_rawdev_xstats_get(uint16_t dev_id,
Fixes: 5194299d6ef5 ("examples/ntb: support more functions")
Cc: stable@dpdk.org
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
---
examples/ntb/ntb_fwd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
> -----Original Message-----
> From: jerinj@marvell.com <jerinj@marvell.com>
> Sent: Tuesday, May 2, 2023 4:51 PM
> To: dev@dpdk.org; Jingjing Wu <jingjing.wu@intel.com>; Junfeng Guo
> <junfeng.guo@intel.com>; Xiaoyun Li <xiaoyun.li@intel.com>
> Cc: NBU-Contact-Thomas Monjalon (EXTERNAL) <thomas@monjalon.net>;
> david.marchand@redhat.com; ferruh.yigit@xilinx.com;
> stephen@networkplumber.org; Jerin Jacob <jerinj@marvell.com>;
> stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v1] examples/ntb: fix build issue with GCC 13
>
> From: Jerin Jacob <jerinj@marvell.com>
>
> Fix the following build issue by not allowing nb_ids to be zero.
> nb_ids can be zero based on rte_rawdev_xstats_get() API
> documentation but it is not valid for the case when second
> argument is NULL.
>
> examples/ntb/ntb_fwd.c: In function 'ntb_stats_display':
> examples/ntb/ntb_fwd.c:945:23: error: 'rte_rawdev_xstats_get'
> accessing 8 bytes in a region of size 0 [-Werror=stringop-overflow=]
> 945 | if (nb_ids != rte_rawdev_xstats_get(dev_id, ids, values, nb_ids)) {
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> examples/ntb/ntb_fwd.c:945:23: note: referencing argument 3
> of type 'uint64_t[0]' {aka 'long unsigned int[]'}
> In file included from ../examples/ntb/ntb_fwd.c:17:
> lib/rawdev/rte_rawdev.h:504:1: note: in a call to function
> 'rte_rawdev_xstats_get'
> 504 | rte_rawdev_xstats_get(uint16_t dev_id,
>
> Fixes: 5194299d6ef5 ("examples/ntb: support more functions")
> Cc: stable@dpdk.org
> Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> ---
Resolves the build failure for me on Fedora 38 with gcc 13.1.1.
Tested-by: Ali Alnubani <alialnu@nvidia.com>
> -----Original Message-----
> From: jerinj@marvell.com <jerinj@marvell.com>
> Sent: Tuesday, May 2, 2023 21:51
> To: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Guo, Junfeng
> <junfeng.guo@intel.com>; Li, Xiaoyun <xiaoyun.li@intel.com>
> Cc: thomas@monjalon.net; david.marchand@redhat.com;
> ferruh.yigit@xilinx.com; stephen@networkplumber.org; Jerin Jacob
> <jerinj@marvell.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v1] examples/ntb: fix build issue with GCC 13
>
> From: Jerin Jacob <jerinj@marvell.com>
>
> Fix the following build issue by not allowing nb_ids to be zero.
> nb_ids can be zero based on rte_rawdev_xstats_get() API
> documentation but it is not valid for the case when second
> argument is NULL.
Is this the new standard for GCC 13?
>
> examples/ntb/ntb_fwd.c: In function 'ntb_stats_display':
> examples/ntb/ntb_fwd.c:945:23: error: 'rte_rawdev_xstats_get'
> accessing 8 bytes in a region of size 0 [-Werror=stringop-overflow=]
> 945 | if (nb_ids != rte_rawdev_xstats_get(dev_id, ids, values, nb_ids)) {
> |
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> examples/ntb/ntb_fwd.c:945:23: note: referencing argument 3
> of type 'uint64_t[0]' {aka 'long unsigned int[]'}
> In file included from ../examples/ntb/ntb_fwd.c:17:
> lib/rawdev/rte_rawdev.h:504:1: note: in a call to function
> 'rte_rawdev_xstats_get'
> 504 | rte_rawdev_xstats_get(uint16_t dev_id,
>
> Fixes: 5194299d6ef5 ("examples/ntb: support more functions")
> Cc: stable@dpdk.org
> Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> ---
> examples/ntb/ntb_fwd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/examples/ntb/ntb_fwd.c b/examples/ntb/ntb_fwd.c
> index f9abed28e4..5489c3b3cd 100644
> --- a/examples/ntb/ntb_fwd.c
> +++ b/examples/ntb/ntb_fwd.c
> @@ -923,7 +923,7 @@ ntb_stats_display(void)
>
> /* Get NTB dev stats and stats names */
> nb_ids = rte_rawdev_xstats_names_get(dev_id, NULL, 0);
> - if (nb_ids < 0) {
> + if (nb_ids <= 0) {
Should the one in func ntb_stats_clear also be updated non-zero?
> printf("Error: Cannot get count of xstats\n");
> return;
> }
> --
> 2.40.1
On Thu, May 4, 2023 at 2:06 PM Guo, Junfeng <junfeng.guo@intel.com> wrote:
>
>
>
> > -----Original Message-----
> > From: jerinj@marvell.com <jerinj@marvell.com>
> > Sent: Tuesday, May 2, 2023 21:51
> > To: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Guo, Junfeng
> > <junfeng.guo@intel.com>; Li, Xiaoyun <xiaoyun.li@intel.com>
> > Cc: thomas@monjalon.net; david.marchand@redhat.com;
> > ferruh.yigit@xilinx.com; stephen@networkplumber.org; Jerin Jacob
> > <jerinj@marvell.com>; stable@dpdk.org
> > Subject: [dpdk-dev] [PATCH v1] examples/ntb: fix build issue with GCC 13
> >
> > From: Jerin Jacob <jerinj@marvell.com>
> >
> > Fix the following build issue by not allowing nb_ids to be zero.
> > nb_ids can be zero based on rte_rawdev_xstats_get() API
> > documentation but it is not valid for the case when second
> > argument is NULL.
>
> Is this the new standard for GCC 13?
No. Looks like optimization from compiler. It is able to detect their
case for zero memory allocation.
>
> >
> > examples/ntb/ntb_fwd.c: In function 'ntb_stats_display':
> > examples/ntb/ntb_fwd.c:945:23: error: 'rte_rawdev_xstats_get'
> > accessing 8 bytes in a region of size 0 [-Werror=stringop-overflow=]
> > 945 | if (nb_ids != rte_rawdev_xstats_get(dev_id, ids, values, nb_ids)) {
> > |
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> > examples/ntb/ntb_fwd.c:945:23: note: referencing argument 3
> > of type 'uint64_t[0]' {aka 'long unsigned int[]'}
> > In file included from ../examples/ntb/ntb_fwd.c:17:
> > lib/rawdev/rte_rawdev.h:504:1: note: in a call to function
> > 'rte_rawdev_xstats_get'
> > 504 | rte_rawdev_xstats_get(uint16_t dev_id,
> >
> > Fixes: 5194299d6ef5 ("examples/ntb: support more functions")
> > Cc: stable@dpdk.org
> > Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> > ---
> > examples/ntb/ntb_fwd.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/examples/ntb/ntb_fwd.c b/examples/ntb/ntb_fwd.c
> > index f9abed28e4..5489c3b3cd 100644
> > --- a/examples/ntb/ntb_fwd.c
> > +++ b/examples/ntb/ntb_fwd.c
> > @@ -923,7 +923,7 @@ ntb_stats_display(void)
> >
> > /* Get NTB dev stats and stats names */
> > nb_ids = rte_rawdev_xstats_names_get(dev_id, NULL, 0);
> > - if (nb_ids < 0) {
> > + if (nb_ids <= 0) {
>
> Should the one in func ntb_stats_clear also be updated non-zero?
Some reason compiler is not detecting it. I will fix in next version.
>
> > printf("Error: Cannot get count of xstats\n");
> > return;
> > }
> > --
> > 2.40.1
>
@@ -923,7 +923,7 @@ ntb_stats_display(void)
/* Get NTB dev stats and stats names */
nb_ids = rte_rawdev_xstats_names_get(dev_id, NULL, 0);
- if (nb_ids < 0) {
+ if (nb_ids <= 0) {
printf("Error: Cannot get count of xstats\n");
return;
}