summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/opencrypto/cryptodeflate.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/opencrypto/cryptodeflate.c')
-rw-r--r--freebsd/sys/opencrypto/cryptodeflate.c97
1 files changed, 39 insertions, 58 deletions
diff --git a/freebsd/sys/opencrypto/cryptodeflate.c b/freebsd/sys/opencrypto/cryptodeflate.c
index 8ab063f4..30d0844a 100644
--- a/freebsd/sys/opencrypto/cryptodeflate.c
+++ b/freebsd/sys/opencrypto/cryptodeflate.c
@@ -31,7 +31,7 @@
/*
* This file contains a wrapper around the deflate algo compression
- * functions using the zlib library (see libkern/zlib.c and sys/zlib.h})
+ * functions using the zlib library (see sys/contrib/zlib)
*/
#include <sys/cdefs.h>
@@ -44,7 +44,7 @@ __FBSDID("$FreeBSD$");
#include <sys/kernel.h>
#include <sys/sdt.h>
#include <sys/systm.h>
-#include <sys/zlib.h>
+#include <contrib/zlib/zlib.h>
#include <opencrypto/cryptodev.h>
#include <opencrypto/deflate.h>
@@ -52,16 +52,32 @@ __FBSDID("$FreeBSD$");
SDT_PROVIDER_DECLARE(opencrypto);
SDT_PROBE_DEFINE2(opencrypto, deflate, deflate_global, entry,
"int", "u_int32_t");
-SDT_PROBE_DEFINE5(opencrypto, deflate, deflate_global, bad,
- "int", "int", "int", "int", "int");
-SDT_PROBE_DEFINE5(opencrypto, deflate, deflate_global, iter,
- "int", "int", "int", "int", "int");
+SDT_PROBE_DEFINE6(opencrypto, deflate, deflate_global, bad,
+ "int", "int", "int", "int", "int", "int");
+SDT_PROBE_DEFINE6(opencrypto, deflate, deflate_global, iter,
+ "int", "int", "int", "int", "int", "int");
SDT_PROBE_DEFINE2(opencrypto, deflate, deflate_global, return,
"int", "u_int32_t");
int window_inflate = -1 * MAX_WBITS;
int window_deflate = -12;
+static void *
+crypto_zalloc(void *nil, u_int type, u_int size)
+{
+ void *ptr;
+
+ ptr = malloc(type *size, M_CRYPTO_DATA, M_NOWAIT);
+ return ptr;
+}
+
+static void
+crypto_zfree(void *nil, void *ptr)
+{
+
+ free(ptr, M_CRYPTO_DATA);
+}
+
/*
* This function takes a block of data and (de)compress it using the deflate
* algorithm
@@ -107,16 +123,16 @@ deflate_global(data, size, decomp, out)
bufh = bufp = malloc(sizeof(*bufp) + (size_t)(size * i),
M_CRYPTO_DATA, M_NOWAIT);
if (bufp == NULL) {
- SDT_PROBE5(opencrypto, deflate, deflate_global, bad,
- decomp, 0, __LINE__, 0, 0);
+ SDT_PROBE6(opencrypto, deflate, deflate_global, bad,
+ decomp, 0, __LINE__, 0, 0, 0);
goto bad2;
}
bufp->next = NULL;
bufp->size = size * i;
bzero(&zbuf, sizeof(z_stream));
- zbuf.zalloc = z_alloc;
- zbuf.zfree = z_free;
+ zbuf.zalloc = crypto_zalloc;
+ zbuf.zfree = crypto_zfree;
zbuf.opaque = Z_NULL;
zbuf.next_in = data; /* Data that is going to be processed. */
zbuf.avail_in = size; /* Total length of data to be processed. */
@@ -127,8 +143,8 @@ deflate_global(data, size, decomp, out)
deflateInit2(&zbuf, Z_DEFAULT_COMPRESSION, Z_METHOD,
window_deflate, Z_MEMLEVEL, Z_DEFAULT_STRATEGY);
if (error != Z_OK) {
- SDT_PROBE5(opencrypto, deflate, deflate_global, bad,
- decomp, error, __LINE__, 0, 0);
+ SDT_PROBE6(opencrypto, deflate, deflate_global, bad,
+ decomp, error, __LINE__, 0, 0, 0);
goto bad;
}
@@ -136,24 +152,14 @@ deflate_global(data, size, decomp, out)
error = decomp ? inflate(&zbuf, Z_SYNC_FLUSH) :
deflate(&zbuf, Z_FINISH);
if (error != Z_OK && error != Z_STREAM_END) {
- /*
- * Unfortunately we are limited to 5 arguments,
- * thus use two probes.
- */
- SDT_PROBE5(opencrypto, deflate, deflate_global, bad,
- decomp, error, __LINE__,
- zbuf.avail_in, zbuf.avail_out);
- SDT_PROBE5(opencrypto, deflate, deflate_global, bad,
+ SDT_PROBE6(opencrypto, deflate, deflate_global, bad,
decomp, error, __LINE__,
- zbuf.state->dummy, zbuf.total_out);
+ zbuf.avail_in, zbuf.avail_out, zbuf.total_out);
goto bad;
}
- SDT_PROBE5(opencrypto, deflate, deflate_global, iter,
- decomp, error, __LINE__,
- zbuf.avail_in, zbuf.avail_out);
- SDT_PROBE5(opencrypto, deflate, deflate_global, iter,
+ SDT_PROBE6(opencrypto, deflate, deflate_global, iter,
decomp, error, __LINE__,
- zbuf.state->dummy, zbuf.total_out);
+ zbuf.avail_in, zbuf.avail_out, zbuf.total_out);
if (decomp && zbuf.avail_in == 0 && error == Z_STREAM_END) {
/* Done. */
break;
@@ -167,8 +173,8 @@ deflate_global(data, size, decomp, out)
p = malloc(sizeof(*p) + (size_t)(size * i),
M_CRYPTO_DATA, M_NOWAIT);
if (p == NULL) {
- SDT_PROBE5(opencrypto, deflate, deflate_global,
- bad, decomp, 0, __LINE__, 0, 0);
+ SDT_PROBE6(opencrypto, deflate, deflate_global,
+ bad, decomp, 0, __LINE__, 0, 0, 0);
goto bad;
}
p->next = NULL;
@@ -179,16 +185,9 @@ deflate_global(data, size, decomp, out)
zbuf.avail_out = bufp->size;
} else {
/* Unexpect result. */
- /*
- * Unfortunately we are limited to 5 arguments,
- * thus, again, use two probes.
- */
- SDT_PROBE5(opencrypto, deflate, deflate_global, bad,
- decomp, error, __LINE__,
- zbuf.avail_in, zbuf.avail_out);
- SDT_PROBE5(opencrypto, deflate, deflate_global, bad,
- decomp, error, __LINE__,
- zbuf.state->dummy, zbuf.total_out);
+ SDT_PROBE6(opencrypto, deflate, deflate_global,
+ bad, decomp, error, __LINE__,
+ zbuf.avail_in, zbuf.avail_out, zbuf.total_out);
goto bad;
}
}
@@ -197,8 +196,8 @@ deflate_global(data, size, decomp, out)
*out = malloc(result, M_CRYPTO_DATA, M_NOWAIT);
if (*out == NULL) {
- SDT_PROBE5(opencrypto, deflate, deflate_global, bad,
- decomp, 0, __LINE__, 0, 0);
+ SDT_PROBE6(opencrypto, deflate, deflate_global, bad,
+ decomp, 0, __LINE__, 0, 0, 0);
goto bad;
}
if (decomp)
@@ -245,21 +244,3 @@ bad2:
*out = NULL;
return 0;
}
-
-void *
-z_alloc(nil, type, size)
- void *nil;
- u_int type, size;
-{
- void *ptr;
-
- ptr = malloc(type *size, M_CRYPTO_DATA, M_NOWAIT);
- return ptr;
-}
-
-void
-z_free(nil, ptr)
- void *nil, *ptr;
-{
- free(ptr, M_CRYPTO_DATA);
-}