[dpdk-dev] crypto/qat: fix segmentation fault in session create
Checks
Commit Message
This patch fixes segementation fault that may occur in case
of wrong parameters being provided to the cryptographic
session. Unused fields which would cause null dereference
are removed.
Fixes: 1703e94ac5ce ("qat: add driver for QuickAssist devices")
This patchset depends on the following patches/patchsets:
"crypto/qat: adding docsisbpi mode support"
(http://dpdk.org/dev/patchwork/patch/21121/)
Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
---
drivers/crypto/qat/qat_crypto.c | 13 ++-----------
drivers/crypto/qat/qat_crypto.h | 3 ---
2 files changed, 2 insertions(+), 14 deletions(-)
Comments
> -----Original Message-----
> From: Kusztal, ArkadiuszX
> Sent: Wednesday, March 29, 2017 11:32 AM
> To: dev@dpdk.org
> Cc: Trahe, Fiona <fiona.trahe@intel.com>; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>; Griffin, John <john.griffin@intel.com>;
> Jain, Deepak K <deepak.k.jain@intel.com>; Kusztal, ArkadiuszX
> <arkadiuszx.kusztal@intel.com>
> Subject: [PATCH] crypto/qat: fix segmentation fault in session create
>
> This patch fixes segementation fault that may occur in case
> of wrong parameters being provided to the cryptographic
> session. Unused fields which would cause null dereference
> are removed.
>
> Fixes: 1703e94ac5ce ("qat: add driver for QuickAssist devices")
>
> This patchset depends on the following patches/patchsets:
>
> "crypto/qat: adding docsisbpi mode support"
> (http://dpdk.org/dev/patchwork/patch/21121/)
>
> Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
> -----Original Message-----
> From: Trahe, Fiona
> Sent: Thursday, March 30, 2017 2:37 PM
> To: Kusztal, ArkadiuszX; dev@dpdk.org
> Cc: De Lara Guarch, Pablo; Griffin, John; Jain, Deepak K
> Subject: RE: [PATCH] crypto/qat: fix segmentation fault in session create
>
>
>
> > -----Original Message-----
> > From: Kusztal, ArkadiuszX
> > Sent: Wednesday, March 29, 2017 11:32 AM
> > To: dev@dpdk.org
> > Cc: Trahe, Fiona <fiona.trahe@intel.com>; De Lara Guarch, Pablo
> > <pablo.de.lara.guarch@intel.com>; Griffin, John <john.griffin@intel.com>;
> > Jain, Deepak K <deepak.k.jain@intel.com>; Kusztal, ArkadiuszX
> > <arkadiuszx.kusztal@intel.com>
> > Subject: [PATCH] crypto/qat: fix segmentation fault in session create
> >
> > This patch fixes segementation fault that may occur in case
> > of wrong parameters being provided to the cryptographic
> > session. Unused fields which would cause null dereference
> > are removed.
> >
> > Fixes: 1703e94ac5ce ("qat: add driver for QuickAssist devices")
> >
> > This patchset depends on the following patches/patchsets:
> >
> > "crypto/qat: adding docsisbpi mode support"
> > (http://dpdk.org/dev/patchwork/patch/21121/)
> >
> > Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
> Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Applied to dpdk-next-crypto.
Thanks,
Pablo
CC'ing stable repo.
> -----Original Message-----
> From: Kusztal, ArkadiuszX
> Sent: Wednesday, March 29, 2017 11:32 AM
> To: dev@dpdk.org
> Cc: Trahe, Fiona; De Lara Guarch, Pablo; Griffin, John; Jain, Deepak K;
> Kusztal, ArkadiuszX
> Subject: [PATCH] crypto/qat: fix segmentation fault in session create
>
> This patch fixes segementation fault that may occur in case
> of wrong parameters being provided to the cryptographic
> session. Unused fields which would cause null dereference
> are removed.
>
> Fixes: 1703e94ac5ce ("qat: add driver for QuickAssist devices")
>
> This patchset depends on the following patches/patchsets:
>
> "crypto/qat: adding docsisbpi mode support"
> (http://dpdk.org/dev/patchwork/patch/21121/)
>
> Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
> ---
> drivers/crypto/qat/qat_crypto.c | 13 ++-----------
> drivers/crypto/qat/qat_crypto.h | 3 ---
> 2 files changed, 2 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/crypto/qat/qat_crypto.c
> b/drivers/crypto/qat/qat_crypto.c
> index b851926..9310211 100644
> --- a/drivers/crypto/qat/qat_crypto.c
> +++ b/drivers/crypto/qat/qat_crypto.c
> @@ -739,11 +739,9 @@ qat_get_cipher_xform(struct
> rte_crypto_sym_xform *xform)
> return NULL;
> }
> void *
> -qat_crypto_sym_configure_session_cipher(struct rte_cryptodev *dev,
> +qat_crypto_sym_configure_session_cipher(struct rte_cryptodev *dev
> __rte_unused,
> struct rte_crypto_sym_xform *xform, void
> *session_private)
> {
> - struct qat_pmd_private *internals = dev->data->dev_private;
> -
> struct qat_session *session = session_private;
>
> struct rte_crypto_cipher_xform *cipher_xform = NULL;
> @@ -884,7 +882,6 @@ qat_crypto_sym_configure_session_cipher(struct
> rte_cryptodev *dev,
> bpi_cipher_ctx_free(session->bpi_ctx);
> session->bpi_ctx = NULL;
> }
> - rte_mempool_put(internals->sess_mp, session);
> return NULL;
> }
>
> @@ -893,8 +890,6 @@ void *
> qat_crypto_sym_configure_session(struct rte_cryptodev *dev,
> struct rte_crypto_sym_xform *xform, void
> *session_private)
> {
> - struct qat_pmd_private *internals = dev->data->dev_private;
> -
> struct qat_session *session = session_private;
>
> int qat_cmd_id;
> @@ -943,17 +938,15 @@ qat_crypto_sym_configure_session(struct
> rte_cryptodev *dev,
> return session;
>
> error_out:
> - rte_mempool_put(internals->sess_mp, session);
> return NULL;
> }
>
> struct qat_session *
> -qat_crypto_sym_configure_session_auth(struct rte_cryptodev *dev,
> +qat_crypto_sym_configure_session_auth(struct rte_cryptodev *dev
> __rte_unused,
> struct rte_crypto_sym_xform *xform,
> struct qat_session *session_private)
> {
>
> - struct qat_pmd_private *internals = dev->data->dev_private;
> struct qat_session *session = session_private;
> struct rte_crypto_auth_xform *auth_xform = NULL;
> struct rte_crypto_cipher_xform *cipher_xform = NULL;
> @@ -1038,8 +1031,6 @@ qat_crypto_sym_configure_session_auth(struct
> rte_cryptodev *dev,
> return session;
>
> error_out:
> - if (internals->sess_mp != NULL)
> - rte_mempool_put(internals->sess_mp, session);
> return NULL;
> }
>
> diff --git a/drivers/crypto/qat/qat_crypto.h
> b/drivers/crypto/qat/qat_crypto.h
> index 78bb2bc..67fa0e1 100644
> --- a/drivers/crypto/qat/qat_crypto.h
> +++ b/drivers/crypto/qat/qat_crypto.h
> @@ -76,9 +76,6 @@ struct qat_qp {
>
> /** private data structure for each QAT device */
> struct qat_pmd_private {
> - char sess_mp_name[RTE_MEMPOOL_NAMESIZE];
> - struct rte_mempool *sess_mp;
> -
> unsigned max_nb_queue_pairs;
> /**< Max number of queue pairs supported by device */
> unsigned max_nb_sessions;
> --
> 2.7.4
@@ -739,11 +739,9 @@ qat_get_cipher_xform(struct rte_crypto_sym_xform *xform)
return NULL;
}
void *
-qat_crypto_sym_configure_session_cipher(struct rte_cryptodev *dev,
+qat_crypto_sym_configure_session_cipher(struct rte_cryptodev *dev __rte_unused,
struct rte_crypto_sym_xform *xform, void *session_private)
{
- struct qat_pmd_private *internals = dev->data->dev_private;
-
struct qat_session *session = session_private;
struct rte_crypto_cipher_xform *cipher_xform = NULL;
@@ -884,7 +882,6 @@ qat_crypto_sym_configure_session_cipher(struct rte_cryptodev *dev,
bpi_cipher_ctx_free(session->bpi_ctx);
session->bpi_ctx = NULL;
}
- rte_mempool_put(internals->sess_mp, session);
return NULL;
}
@@ -893,8 +890,6 @@ void *
qat_crypto_sym_configure_session(struct rte_cryptodev *dev,
struct rte_crypto_sym_xform *xform, void *session_private)
{
- struct qat_pmd_private *internals = dev->data->dev_private;
-
struct qat_session *session = session_private;
int qat_cmd_id;
@@ -943,17 +938,15 @@ qat_crypto_sym_configure_session(struct rte_cryptodev *dev,
return session;
error_out:
- rte_mempool_put(internals->sess_mp, session);
return NULL;
}
struct qat_session *
-qat_crypto_sym_configure_session_auth(struct rte_cryptodev *dev,
+qat_crypto_sym_configure_session_auth(struct rte_cryptodev *dev __rte_unused,
struct rte_crypto_sym_xform *xform,
struct qat_session *session_private)
{
- struct qat_pmd_private *internals = dev->data->dev_private;
struct qat_session *session = session_private;
struct rte_crypto_auth_xform *auth_xform = NULL;
struct rte_crypto_cipher_xform *cipher_xform = NULL;
@@ -1038,8 +1031,6 @@ qat_crypto_sym_configure_session_auth(struct rte_cryptodev *dev,
return session;
error_out:
- if (internals->sess_mp != NULL)
- rte_mempool_put(internals->sess_mp, session);
return NULL;
}
@@ -76,9 +76,6 @@ struct qat_qp {
/** private data structure for each QAT device */
struct qat_pmd_private {
- char sess_mp_name[RTE_MEMPOOL_NAMESIZE];
- struct rte_mempool *sess_mp;
-
unsigned max_nb_queue_pairs;
/**< Max number of queue pairs supported by device */
unsigned max_nb_sessions;