From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id B6B091EF2C; Wed, 13 Jun 2018 12:00:50 +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 orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jun 2018 03:00:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,218,1526367600"; d="scan'208";a="66624107" Received: from pgsmsx101.gar.corp.intel.com ([10.221.44.78]) by orsmga002.jf.intel.com with ESMTP; 13 Jun 2018 03:00:47 -0700 Received: from pgsmsx102.gar.corp.intel.com ([169.254.6.46]) by PGSMSX101.gar.corp.intel.com ([169.254.1.103]) with mapi id 14.03.0319.002; Wed, 13 Jun 2018 18:00:46 +0800 From: "Gujjar, Abhinandan S" To: "De Lara Guarch, Pablo" , "Doherty, Declan" CC: "dev@dpdk.org" , "stable@dpdk.org" Thread-Topic: [PATCH] cryptodev: fix ABI breakage Thread-Index: AQHUAvoDlNhdoM8bhEyh7kzd/DVnAqRd9FMA Date: Wed, 13 Jun 2018 10:00:45 +0000 Message-ID: <5612CB344B05EE4F95FC5B729939F78070793376@PGSMSX102.gar.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-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiM2Y0ZWFlZmMtYTcwOC00ODRhLWI0ZjctMmUxYmEwN2ExYjI0IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiN1VQSlwvRlhvMCt1TUFaRnFhU1kwSm5QWlNwT0VoYjdrN0F6aFFXUVwvQXBFcUFQejh0NHl4VmVkXC9LRWdnTU5EdiJ9 dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [172.30.20.206] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-stable] [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 10:00:52 -0000 > -----Original Message----- > From: De Lara Guarch, Pablo > Sent: Wednesday, June 13, 2018 3:07 PM > To: Doherty, Declan ; Gujjar, Abhinandan S > > Cc: dev@dpdk.org; De Lara Guarch, Pablo ; > stable@dpdk.org > Subject: [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 str= ucture > is expected to be aligned to 64 bits, allowing future additions with no A= BI > breakage needed. >=20 > In 18.05, a new 2-byte field was added, so the reserved bytes were reduce= d to 3. > However, this field was added after the first 3 bytes of the structure, c= ausing 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 unintentionall= y 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 of= fset 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: Abhinandan Gujjar > 2.17.0