Author: jhb
Date: Tue Sep  8 22:41:35 2020
New Revision: 365478
URL: https://svnweb.freebsd.org/changeset/base/365478

Log:
  Don't return errors from the cryptodev_process() method.
  
  The cryptodev_process() method should either return 0 if it has
  completed a request, or ERESTART to defer the request until later.  If
  a request encounters an error, the error should be reported via
  crp_etype before completing the request via crypto_done().
  
  Fix a few more drivers noticed by asomers@ similar to the fix in
  r365389.  This is an old bug, but went unnoticed since crypto requests
  did not start failing as a normal part of operation until digest
  verification was introduced which can fail requests with EBADMSG.
  
  PR:           247986
  Reported by:  asomers
  Sponsored by: Chelsio Communications
  Differential Revision:        https://reviews.freebsd.org/D26361

Modified:
  head/sys/crypto/armv8/armv8_crypto.c
  head/sys/dev/hifn/hifn7751.c
  head/sys/dev/safe/safe.c

Modified: head/sys/crypto/armv8/armv8_crypto.c
==============================================================================
--- head/sys/crypto/armv8/armv8_crypto.c        Tue Sep  8 22:23:53 2020        
(r365477)
+++ head/sys/crypto/armv8/armv8_crypto.c        Tue Sep  8 22:41:35 2020        
(r365478)
@@ -281,7 +281,7 @@ armv8_crypto_process(device_t dev, struct cryptop *crp
 out:
        crp->crp_etype = error;
        crypto_done(crp);
-       return (error);
+       return (0);
 }
 
 static uint8_t *

Modified: head/sys/dev/hifn/hifn7751.c
==============================================================================
--- head/sys/dev/hifn/hifn7751.c        Tue Sep  8 22:23:53 2020        
(r365477)
+++ head/sys/dev/hifn/hifn7751.c        Tue Sep  8 22:41:35 2020        
(r365478)
@@ -2517,7 +2517,7 @@ errout:
                hifnstats.hst_nomem++;
        crp->crp_etype = err;
        crypto_done(crp);
-       return (err);
+       return (0);
 }
 
 static void

Modified: head/sys/dev/safe/safe.c
==============================================================================
--- head/sys/dev/safe/safe.c    Tue Sep  8 22:23:53 2020        (r365477)
+++ head/sys/dev/safe/safe.c    Tue Sep  8 22:41:35 2020        (r365478)
@@ -1259,6 +1259,7 @@ errout:
        if (err != ERESTART) {
                crp->crp_etype = err;
                crypto_done(crp);
+               err = 0;
        } else {
                sc->sc_needwakeup |= CRYPTO_SYMQ;
        }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to