Author: jhb
Date: Thu Jan 11 18:07:21 2018
New Revision: 327838
URL: https://svnweb.freebsd.org/changeset/base/327838

Log:
  Axe tmp_iv from the cryptodev session structure.
  
  Just copyin the IV into the crypto descriptor directly.  This avoids
  copying the IV twice for each operation.
  
  Reviewed by:  kib
  MFC after:    2 weeks
  Sponsored by: Chelsio Communications
  Differential Revision:        https://reviews.freebsd.org/D13847

Modified:
  head/sys/opencrypto/cryptodev.c

Modified: head/sys/opencrypto/cryptodev.c
==============================================================================
--- head/sys/opencrypto/cryptodev.c     Thu Jan 11 17:51:22 2018        
(r327837)
+++ head/sys/opencrypto/cryptodev.c     Thu Jan 11 18:07:21 2018        
(r327838)
@@ -278,7 +278,6 @@ struct csession {
 
        caddr_t         key;
        int             keylen;
-       u_char          tmp_iv[EALG_MAX_BLOCK_LEN];
 
        caddr_t         mackey;
        int             mackeylen;
@@ -823,12 +822,11 @@ cryptodev_op(
                        error = EINVAL;
                        goto bail;
                }
-               if ((error = copyin(cop->iv, cse->tmp_iv,
+               if ((error = copyin(cop->iv, crde->crd_iv,
                    cse->txform->blocksize))) {
                        SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
                        goto bail;
                }
-               bcopy(cse->tmp_iv, crde->crd_iv, cse->txform->blocksize);
                crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT;
                crde->crd_skip = 0;
        } else if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */
@@ -1005,17 +1003,16 @@ cryptodev_aead(
        crp->crp_opaque = (void *)cse;
 
        if (caead->iv) {
-               if (caead->ivlen > sizeof cse->tmp_iv) {
+               if (caead->ivlen > sizeof(crde->crd_iv)) {
                        error = EINVAL;
                        SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
                        goto bail;
                }
 
-               if ((error = copyin(caead->iv, cse->tmp_iv, caead->ivlen))) {
+               if ((error = copyin(caead->iv, crde->crd_iv, caead->ivlen))) {
                        SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
                        goto bail;
                }
-               bcopy(cse->tmp_iv, crde->crd_iv, caead->ivlen);
                crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT;
        } else {
                crde->crd_flags |= CRD_F_IV_PRESENT;
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to