aboutsummaryrefslogtreecommitdiff
path: root/sys/opencrypto/cryptodev.c
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2003-11-19 22:42:34 +0000
committerSam Leffler <sam@FreeBSD.org>2003-11-19 22:42:34 +0000
commit57053a10cfdbd854607162021200b886bfa4e0a0 (patch)
tree36fb8126ee4d5b62f39fb2a2b1ddca19ad63c6e0 /sys/opencrypto/cryptodev.c
parent39330d77d46aedc42a570532b44a1ade476b0a8c (diff)
Notes
Diffstat (limited to 'sys/opencrypto/cryptodev.c')
-rw-r--r--sys/opencrypto/cryptodev.c13
1 files 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) {