svn commit: r327838 - head/sys/opencrypto
John Baldwin
jhb at FreeBSD.org
Thu Jan 11 18:07:22 UTC 2018
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;
More information about the svn-src-all
mailing list