[dpdk-dev] crypto/aesni_mb: fix assert check

Message ID 20170531134443.39911-1-pablo.de.lara.guarch@intel.com (mailing list archive)
State Rejected, archived
Delegated to: Pablo de Lara Guarch
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

De Lara Guarch, Pablo May 31, 2017, 1:44 p.m. UTC
  Fixes: 0f548b50a160 ("crypto/aesni_mb: process crypto op on dequeue")
CC: stable@dpdk.org

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Stephen Hemminger May 31, 2017, 10:52 p.m. UTC | #1
On Wed, 31 May 2017 14:44:43 +0100
Pablo de Lara <pablo.de.lara.guarch@intel.com> wrote:

> Fixes: 0f548b50a160 ("crypto/aesni_mb: process crypto op on dequeue")
> CC: stable@dpdk.org
> 
> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
> ---
>  drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> index 45b25c9..dde60c0 100644
> --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> @@ -494,7 +494,7 @@ static inline void
>  verify_digest(JOB_AES_HMAC *job, struct rte_crypto_op *op) {
>  	struct rte_mbuf *m_dst = (struct rte_mbuf *)job->user_data2;
>  
> -	RTE_ASSERT(m_dst == NULL);
> +	RTE_ASSERT(m_dst != NULL);
>  
>  	/* Verify digest if required */
>  	if (memcmp(job->auth_tag_output, op->sym->auth.digest.data,
> @@ -522,7 +522,7 @@ post_process_mb_job(struct aesni_mb_qp *qp, JOB_AES_HMAC *job)
>  
>  	struct aesni_mb_session *sess;
>  
> -	RTE_ASSERT(op == NULL);
> +	RTE_ASSERT(op != NULL);
>  
>  	if (unlikely(op->status == RTE_CRYPTO_OP_STATUS_ENQUEUED)) {
>  		switch (job->status) {

These kind of asserts are actually meaningless. In real world,
it really doesn't matter if application panics because of assert (sigabort) or
because of segfault on null pointer dereference. In either case it causes
a crash. If you have built in a real signal handler and  backtracing, or
enabled core dumps then data is available. If not then the application just
dies.
  
De Lara Guarch, Pablo June 21, 2017, 2:20 p.m. UTC | #2
Hi Stephen,

> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Wednesday, May 31, 2017 11:52 PM
> To: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>
> Cc: Doherty, Declan <declan.doherty@intel.com>; dev@dpdk.org;
> stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] crypto/aesni_mb: fix assert check
> 
> On Wed, 31 May 2017 14:44:43 +0100
> Pablo de Lara <pablo.de.lara.guarch@intel.com> wrote:
> 
> > Fixes: 0f548b50a160 ("crypto/aesni_mb: process crypto op on dequeue")
> > CC: stable@dpdk.org
> >
> > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
> > ---
> >  drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> > b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> > index 45b25c9..dde60c0 100644
> > --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> > +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> > @@ -494,7 +494,7 @@ static inline void  verify_digest(JOB_AES_HMAC
> > *job, struct rte_crypto_op *op) {
> >  	struct rte_mbuf *m_dst = (struct rte_mbuf *)job->user_data2;
> >
> > -	RTE_ASSERT(m_dst == NULL);
> > +	RTE_ASSERT(m_dst != NULL);
> >
> >  	/* Verify digest if required */
> >  	if (memcmp(job->auth_tag_output, op->sym->auth.digest.data, @@
> > -522,7 +522,7 @@ post_process_mb_job(struct aesni_mb_qp *qp,
> > JOB_AES_HMAC *job)
> >
> >  	struct aesni_mb_session *sess;
> >
> > -	RTE_ASSERT(op == NULL);
> > +	RTE_ASSERT(op != NULL);
> >
> >  	if (unlikely(op->status == RTE_CRYPTO_OP_STATUS_ENQUEUED)) {
> >  		switch (job->status) {
> 
> These kind of asserts are actually meaningless. In real world, it really doesn't
> matter if application panics because of assert (sigabort) or because of segfault
> on null pointer dereference. In either case it causes a crash. If you have built in a
> real signal handler and  backtracing, or enabled core dumps then data is
> available. If not then the application just dies.

Good point, I will remove it then.
  

Patch

diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
index 45b25c9..dde60c0 100644
--- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
+++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
@@ -494,7 +494,7 @@  static inline void
 verify_digest(JOB_AES_HMAC *job, struct rte_crypto_op *op) {
 	struct rte_mbuf *m_dst = (struct rte_mbuf *)job->user_data2;
 
-	RTE_ASSERT(m_dst == NULL);
+	RTE_ASSERT(m_dst != NULL);
 
 	/* Verify digest if required */
 	if (memcmp(job->auth_tag_output, op->sym->auth.digest.data,
@@ -522,7 +522,7 @@  post_process_mb_job(struct aesni_mb_qp *qp, JOB_AES_HMAC *job)
 
 	struct aesni_mb_session *sess;
 
-	RTE_ASSERT(op == NULL);
+	RTE_ASSERT(op != NULL);
 
 	if (unlikely(op->status == RTE_CRYPTO_OP_STATUS_ENQUEUED)) {
 		switch (job->status) {