From 57053a10cfdbd854607162021200b886bfa4e0a0 Mon Sep 17 00:00:00 2001 From: Sam Leffler Date: Wed, 19 Nov 2003 22:42:34 +0000 Subject: [PATCH] eliminate an unnecessary 8Kbyte bzero that was being done for each submitted operation Submitted by: Thor Lancelot Simon Reviewed by: jhb Approved by: re (jhb) --- sys/opencrypto/cryptodev.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/sys/opencrypto/cryptodev.c b/sys/opencrypto/cryptodev.c index 51617f5f58b6..1d2398f1a31f 100644 --- a/sys/opencrypto/cryptodev.c +++ b/sys/opencrypto/cryptodev.c @@ -72,7 +72,7 @@ struct csession { int mackeylen; u_char tmp_mac[CRYPTO_MAX_MAC_LEN]; - struct iovec iovec[UIO_MAXIOV]; + struct iovec iovec; struct uio uio; int error; }; @@ -317,7 +317,7 @@ cryptodev_op( { struct cryptop *crp = NULL; struct cryptodesc *crde = NULL, *crda = NULL; - int i, error; + int error; if (cop->len > 256*1024-4) return (E2BIG); @@ -325,18 +325,15 @@ cryptodev_op( if (cse->txform && (cop->len % cse->txform->blocksize) != 0) return (EINVAL); - bzero(&cse->uio, sizeof(cse->uio)); + cse->uio.uio_iov = &cse->iovec; cse->uio.uio_iovcnt = 1; - cse->uio.uio_resid = 0; + cse->uio.uio_offset = 0; + cse->uio.uio_resid = cop->len; cse->uio.uio_segflg = UIO_SYSSPACE; cse->uio.uio_rw = UIO_WRITE; cse->uio.uio_td = td; - cse->uio.uio_iov = cse->iovec; - bzero(&cse->iovec, sizeof(cse->iovec)); cse->uio.uio_iov[0].iov_len = cop->len; cse->uio.uio_iov[0].iov_base = malloc(cop->len, M_XDATA, M_WAITOK); - for (i = 0; i < cse->uio.uio_iovcnt; i++) - cse->uio.uio_resid += cse->uio.uio_iov[0].iov_len; crp = crypto_getreq((cse->txform != NULL) + (cse->thash != NULL)); if (crp == NULL) {