From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id F1CB01EE5D; Wed, 13 Jun 2018 11:50:27 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jun 2018 02:50:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,218,1526367600"; d="scan'208";a="66621730" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by orsmga002.jf.intel.com with ESMTP; 13 Jun 2018 02:50:25 -0700 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.126]) by IRSMSX106.ger.corp.intel.com ([169.254.8.80]) with mapi id 14.03.0319.002; Wed, 13 Jun 2018 10:50:24 +0100 From: "Ananyev, Konstantin" To: "De Lara Guarch, Pablo" , "Doherty, Declan" , "Gujjar, Abhinandan S" CC: "dev@dpdk.org" , "De Lara Guarch, Pablo" , "stable@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] cryptodev: fix ABI breakage Thread-Index: AQHUAvoKT50X0IF2RU2H7CWRAMpAp6Rd8awQ Date: Wed, 13 Jun 2018 09:50:24 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258C0C3B509@irsmsx105.ger.corp.intel.com> References: <20180613093648.6070-1-pablo.de.lara.guarch@intel.com> In-Reply-To: <20180613093648.6070-1-pablo.de.lara.guarch@intel.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNDU1MTAxY2QtNGJkYy00ZWFmLTlmZjgtNjY4Y2NhNDMzMzA5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiUXVpQ0Voalc3SjdnYm9JclJrTjBzeFVHUFFvN2Q5MTVSQVwvaWZjZnZlNE1uMUxxeVwvMGhwSmp1dDZBQkQyZzVFIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH] cryptodev: fix ABI breakage X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jun 2018 09:50:28 -0000 > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Pablo de Lara > Sent: Wednesday, June 13, 2018 10:37 AM > To: Doherty, Declan ; Gujjar, Abhinandan S > Cc: dev@dpdk.org; De Lara Guarch, Pablo ;= stable@dpdk.org > Subject: [dpdk-dev] [PATCH] cryptodev: fix ABI breakage >=20 > In 17.08, the crypto operation was restructured, > and some reserved bytes (5) were added to have the mempool > pointer aligned to 64 bits, since the structure is expected > to be aligned to 64 bits, allowing future additions with no > ABI breakage needed. >=20 > In 18.05, a new 2-byte field was added, so the reserved bytes > were reduced to 3. However, this field was added after the first 3 bytes > of the structure, causing it to be placed in an offset of 4 bytes, > and therefore, forcing the mempool pointer to be placed after 16 bytes, > instead of a 8 bytes, causing unintentionally the ABI breakage. >=20 > This commit fixes the breakage, by swapping the reserved bytes > and the private_data_offset field, so the latter is aligned to 2 bytes > and the offset of the mempool pointer returns to its original offset, > 8 bytes. >=20 > Fixes: 54c836846603 ("cryptodev: set private data for session-less mode") > Cc: stable@dpdk.org >=20 > Reported-by: Konstantin Ananyev > Signed-off-by: Pablo de Lara > --- > lib/librte_cryptodev/rte_crypto.h | 51 +++++++++++++++++++------------ > 1 file changed, 31 insertions(+), 20 deletions(-) >=20 > diff --git a/lib/librte_cryptodev/rte_crypto.h b/lib/librte_cryptodev/rte= _crypto.h > index 25404264b..a16be656d 100644 > --- a/lib/librte_cryptodev/rte_crypto.h > +++ b/lib/librte_cryptodev/rte_crypto.h > @@ -73,26 +73,37 @@ enum rte_crypto_op_sess_type { > * rte_cryptodev_enqueue_burst() / rte_cryptodev_dequeue_burst() . > */ > struct rte_crypto_op { > - uint8_t type; > - /**< operation type */ > - uint8_t status; > - /**< > - * operation status - this is reset to > - * RTE_CRYPTO_OP_STATUS_NOT_PROCESSED on allocation from mempool and > - * will be set to RTE_CRYPTO_OP_STATUS_SUCCESS after crypto operation > - * is successfully processed by a crypto PMD > - */ > - uint8_t sess_type; > - /**< operation session type */ > - uint16_t private_data_offset; > - /**< Offset to indicate start of private data (if any). The offset > - * is counted from the start of the rte_crypto_op including IV. > - * The private data may be used by the application to store > - * information which should remain untouched in the library/driver > - */ > - > - uint8_t reserved[3]; > - /**< Reserved bytes to fill 64 bits for future additions */ > + __extension__ > + union { > + uint64_t raw; > + __extension__ > + struct { > + uint8_t type; > + /**< operation type */ > + uint8_t status; > + /**< > + * operation status - this is reset to > + * RTE_CRYPTO_OP_STATUS_NOT_PROCESSED on allocation > + * from mempool and will be set to > + * RTE_CRYPTO_OP_STATUS_SUCCESS after crypto operation > + * is successfully processed by a crypto PMD > + */ > + uint8_t sess_type; > + /**< operation session type */ > + uint8_t reserved[3]; > + /**< Reserved bytes to fill 64 bits for > + * future additions > + */ > + uint16_t private_data_offset; > + /**< Offset to indicate start of private data (if any). > + * The offset is counted from the start of the > + * rte_crypto_op including IV. > + * The private data may be used by the application > + * to store information which should remain untouched > + * in the library/driver > + */ > + }; > + }; > struct rte_mempool *mempool; > /**< crypto operation mempool which operation is allocated from */ >=20 > -- Acked-by: Konstantin Ananyev > 2.17.0