[dpdk-dev] crypto/qat: fix segmentation fault in session create

Message ID 1490783506-18451-1-git-send-email-arkadiuszx.kusztal@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Pablo de Lara Guarch
Headers

Checks

Context Check Description
ci/Intel-compilation fail apply patch file failure
ci/checkpatch success coding style OK

Commit Message

Arkadiusz Kusztal March 29, 2017, 10:31 a.m. UTC
  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

Fiona Trahe March 30, 2017, 1:37 p.m. UTC | #1
> -----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>
  
De Lara Guarch, Pablo March 30, 2017, 10:07 p.m. UTC | #2
> -----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
  
De Lara Guarch, Pablo March 30, 2017, 10:11 p.m. UTC | #3
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
  

Patch

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;