[PATCH v4 10/10] common/dpaxx: remove zero length array
Hemant Agrawal
hemant.agrawal at nxp.com
Tue Nov 28 07:43:50 CET 2023
Acked-by: Hemant Agrawal <hemant.agrawal at nxp.com>
> -----Original Message-----
> From: Stephen Hemminger <stephen at networkplumber.org>
> Sent: Friday, November 24, 2023 12:49 AM
> To: Hemant Agrawal <hemant.agrawal at nxp.com>
> Cc: Tyler Retzlaff <roretzla at linux.microsoft.com>; dev at dpdk.org; Sachin
> Saxena <sachin.saxena at nxp.com>; Gagandeep Singh <G.Singh at nxp.com>
> Subject: Re: [PATCH v4 10/10] common/dpaxx: remove zero length array
> Importance: High
>
> This is a better alternative.
>
> From 52c805b9526dbef62377276c4499c997fbc96268 Mon Sep 17 00:00:00
> 2001
> From: Stephen Hemminger <stephen at networkplumber.org>
> Date: Thu, 23 Nov 2023 11:12:02 -0800
> Subject: [PATCH] common/dpaxx: replace zero length array
>
> The zero length ip_header is used as an overlay to the encap IP header. Since
> the code is already assuming the layout of the structure, replace the array
> with direct access.
>
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> ---
> drivers/common/dpaax/caamflib/desc/ipsec.h | 20 ++++++++++++++------
> 1 file changed, 14 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/common/dpaax/caamflib/desc/ipsec.h
> b/drivers/common/dpaax/caamflib/desc/ipsec.h
> index 95fc3ea5ba3b..d1411cc6aab4 100644
> --- a/drivers/common/dpaax/caamflib/desc/ipsec.h
> +++ b/drivers/common/dpaax/caamflib/desc/ipsec.h
> @@ -334,9 +334,7 @@ struct ipsec_encap_gcm {
> * @seq_num: IPsec sequence number
> * @spi: IPsec SPI (Security Parameters Index)
> * @ip_hdr_len: optional IP Header length (in bytes)
> - * reserved - 16b
> - * Opt. IP Hdr Len - 16b
> - * @ip_hdr: optional IP Header content (only for IPsec legacy mode)
> + * Ip header must follow directly after ipsec_encap_pdb
> */
> struct ipsec_encap_pdb {
> uint32_t options;
> @@ -350,7 +348,6 @@ struct ipsec_encap_pdb {
> };
> uint32_t spi;
> uint32_t ip_hdr_len;
> - uint8_t ip_hdr[0];
> };
>
> static inline unsigned int
> @@ -776,7 +773,12 @@ cnstr_shdsc_ipsec_encap(uint32_t *descbuf, bool
> ps, bool swap,
> PROGRAM_SET_36BIT_ADDR(p);
> phdr = SHR_HDR(p, share, hdr, 0);
> __rta_copy_ipsec_encap_pdb(p, pdb, cipherdata->algtype);
> - COPY_DATA(p, pdb->ip_hdr, pdb->ip_hdr_len);
> +
> + /* ip header if any follows the encap_pdb */
> + if (pdb->ip_hdr_len > 0) {
> + void *ip_hdr = pdb + 1;
> + COPY_DATA(p, ip_hdr, pdb->ip_hdr_len);
> + }
> SET_LABEL(p, hdr);
> pkeyjmp = JUMP(p, keyjmp, LOCAL_JUMP, ALL_TRUE, BOTH|SHRD);
> if (authdata->keylen)
> @@ -913,7 +915,13 @@ cnstr_shdsc_ipsec_encap_des_aes_xcbc(uint32_t
> *descbuf,
> PROGRAM_CNTXT_INIT(p, descbuf, 0);
> phdr = SHR_HDR(p, share, hdr, 0);
> __rta_copy_ipsec_encap_pdb(p, pdb, cipherdata->algtype);
> - COPY_DATA(p, pdb->ip_hdr, pdb->ip_hdr_len);
> +
> + /* ip header if any follows the encap_pdb */
> + if (pdb->ip_hdr_len > 0) {
> + void *ip_hdr = pdb + 1;
> + COPY_DATA(p, ip_hdr, pdb->ip_hdr_len);
> + }
> +
> SET_LABEL(p, hdr);
> pkeyjump = JUMP(p, keyjump, LOCAL_JUMP, ALL_TRUE, SHRD |
> SELF);
> /*
> --
> 2.42.0
More information about the dev
mailing list