Date: Tue, 8 Sep 2020 22:41:35 +0000 (UTC) From: John Baldwin <jhb@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r365478 - in head/sys: crypto/armv8 dev/hifn dev/safe Message-ID: <202009082241.088MfZMH037152@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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; }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202009082241.088MfZMH037152>