[dpdk-stable] [PATCH 2/2] examples/ipsec-gw: fix gcc 10 maybe-uninitialized warning
Ananyev, Konstantin
konstantin.ananyev at intel.com
Tue Mar 10 20:03:47 CET 2020
> >> gcc 10.0.1 reports:
> >>
> >> ../examples/ipsec-secgw/ipsec_process.c: In function ‘ipsec_process’:
> >> ../examples/ipsec-secgw/ipsec_process.c:132:34:
> >> error: ‘grp.m’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >> 132 | grp[n].cnt = pkts + i - grp[n].m;
> >> | ~~~~~~^~
> >>
> >> Fix by initializing the array.
> >>
> >> Fixes: 3e5f4625dc17 ("examples/ipsec-secgw: make data-path to use IPsec library")
> >> Cc: stable at dpdk.org
> >>
> >> Signed-off-by: Kevin Traynor <ktraynor at redhat.com>
> >> ---
> >> note, commit log violates line length but I didn't want to split warning msg.
> >>
> >> Cc: konstantin.ananyev at intel.com
> >> Cc: Radu Nicolau <radu.nicolau at intel.com>
> >> Cc: Akhil Goyal <akhil.goyal at nxp.com>
> >> ---
> >> examples/ipsec-secgw/ipsec_process.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/examples/ipsec-secgw/ipsec_process.c b/examples/ipsec-secgw/ipsec_process.c
> >> index bb2f2b82d..0032c5c08 100644
> >> --- a/examples/ipsec-secgw/ipsec_process.c
> >> +++ b/examples/ipsec-secgw/ipsec_process.c
> >> @@ -287,5 +287,5 @@ ipsec_process(struct ipsec_ctx *ctx, struct ipsec_traffic *trf)
> >> struct rte_ipsec_group *pg;
> >> struct rte_ipsec_session *ips;
> >> - struct rte_ipsec_group grp[RTE_DIM(trf->ipsec.pkts)];
> >> + struct rte_ipsec_group grp[RTE_DIM(trf->ipsec.pkts)] = {};
> >
> > Wouldn't that force to generate an extra instructions to zero-out a chunk of memory,
> > grp pointitg to?
>
> Yes
>
> > Considering that this is perf critical pass, that's probably not a best thing.
> > If disabling compiler warning, is not an option, then probably something like code
> > below would help?
>
> Yes, that is a nice suggestion - this will remove the warning with less
> instructions and LGTM.
>
> In this case we can see that the code is safe because the grp[0].cnt is
> written with a valid value in the second instance but I suppose
> disabling the warning could mask something else later.
>
> If you're ok with the approach below, I can prepare a v2 with your
> "Suggested-by". WDYT?
Sounds like a good plan to me.
Thanks
Konstantin
>
> Kevin.
>
> > Konstantin
> >
> > diff --git a/examples/ipsec-secgw/ipsec_process.c b/examples/ipsec-secgw/ipsec_process.c
> > index bb2f2b82d..6d3a3c9a1 100644
> > --- a/examples/ipsec-secgw/ipsec_process.c
> > +++ b/examples/ipsec-secgw/ipsec_process.c
> > @@ -126,6 +126,7 @@ sa_group(void *sa_ptr[], struct rte_mbuf *pkts[],
> > void * const nosa = &spi;
> >
> > sa = nosa;
> > + grp[0].m = pkts;
> > for (i = 0, n = 0; i != num; i++) {
> >
> > if (sa != sa_ptr[i]) {
> >
More information about the stable
mailing list