On 10/03/2020 13:08, Ananyev, Konstantin wrote:
> Hi Kevin,
> 

Hi Konstantin,

>> 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: sta...@dpdk.org
>>
>> Signed-off-by: Kevin Traynor <ktray...@redhat.com>
>> ---
>> note, commit log violates line length but I didn't want to split warning msg.
>>
>> Cc: konstantin.anan...@intel.com
>> Cc: Radu Nicolau <radu.nico...@intel.com>
>> Cc: Akhil Goyal <akhil.go...@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?

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]) {
> 

Reply via email to