[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