- Fix for build error caused by flexible array member in struct rte_ccryptodev_session. - Change void** casting of sess parameter in rte_cryptodev_session_create which causes a strict-aliasing error
Signed-off-by: Declan Doherty <declan.doherty at intel.com> --- lib/librte_cryptodev/rte_cryptodev.c | 7 +++++-- lib/librte_cryptodev/rte_cryptodev_pmd.h | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c index edd1320..f09f67e 100644 --- a/lib/librte_cryptodev/rte_cryptodev.c +++ b/lib/librte_cryptodev/rte_cryptodev.c @@ -1037,6 +1037,7 @@ rte_cryptodev_session_create(uint8_t dev_id, struct rte_crypto_xform *xform) { struct rte_cryptodev *dev; struct rte_cryptodev_session *sess; + void *_sess; if (!rte_cryptodev_pmd_is_valid_dev(dev_id)) { CDEV_LOG_ERR("Invalid dev_id=%d", dev_id); @@ -1046,11 +1047,13 @@ rte_cryptodev_session_create(uint8_t dev_id, struct rte_crypto_xform *xform) dev = &rte_crypto_devices[dev_id]; /* Allocate a session structure from the session pool */ - if (rte_mempool_get(dev->data->session_pool, (void **)&sess)) { + if (rte_mempool_get(dev->data->session_pool, &_sess)) { CDEV_LOG_ERR("Couldn't get object from session mempool"); return NULL; } + sess = (struct rte_cryptodev_session *)_sess; + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->session_configure, NULL); if (dev->dev_ops->session_configure(dev, xform, sess->_private) == NULL) { @@ -1058,7 +1061,7 @@ rte_cryptodev_session_create(uint8_t dev_id, struct rte_crypto_xform *xform) dev_id); /* Return session to mempool */ - rte_mempool_put(sess->mp, (void *)sess); + rte_mempool_put(sess->mp, _sess); return NULL; } diff --git a/lib/librte_cryptodev/rte_cryptodev_pmd.h b/lib/librte_cryptodev/rte_cryptodev_pmd.h index d5fbe44..8270afa 100644 --- a/lib/librte_cryptodev/rte_cryptodev_pmd.h +++ b/lib/librte_cryptodev/rte_cryptodev_pmd.h @@ -76,7 +76,7 @@ struct rte_cryptodev_session { struct rte_mempool *mp; } __rte_aligned(8); - char _private[]; + char _private[0]; }; struct rte_cryptodev_driver; -- 2.5.0