summaryrefslogtreecommitdiff
path: root/target/linux/generic-2.6/patches-2.6.30/050-pcomp_update.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic-2.6/patches-2.6.30/050-pcomp_update.patch')
-rw-r--r--target/linux/generic-2.6/patches-2.6.30/050-pcomp_update.patch280
1 files changed, 280 insertions, 0 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.30/050-pcomp_update.patch b/target/linux/generic-2.6/patches-2.6.30/050-pcomp_update.patch
new file mode 100644
index 0000000000..abad724f5d
--- /dev/null
+++ b/target/linux/generic-2.6/patches-2.6.30/050-pcomp_update.patch
@@ -0,0 +1,280 @@
+--- a/crypto/testmgr.c
++++ b/crypto/testmgr.c
+@@ -914,24 +914,25 @@ static int test_pcomp(struct crypto_pcom
+ const char *algo = crypto_tfm_alg_driver_name(crypto_pcomp_tfm(tfm));
+ unsigned int i;
+ char result[COMP_BUF_SIZE];
+- int error;
++ int res;
+
+ for (i = 0; i < ctcount; i++) {
+ struct comp_request req;
++ unsigned int produced = 0;
+
+- error = crypto_compress_setup(tfm, ctemplate[i].params,
+- ctemplate[i].paramsize);
+- if (error) {
++ res = crypto_compress_setup(tfm, ctemplate[i].params,
++ ctemplate[i].paramsize);
++ if (res) {
+ pr_err("alg: pcomp: compression setup failed on test "
+- "%d for %s: error=%d\n", i + 1, algo, error);
+- return error;
++ "%d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
+
+- error = crypto_compress_init(tfm);
+- if (error) {
++ res = crypto_compress_init(tfm);
++ if (res) {
+ pr_err("alg: pcomp: compression init failed on test "
+- "%d for %s: error=%d\n", i + 1, algo, error);
+- return error;
++ "%d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
+
+ memset(result, 0, sizeof(result));
+@@ -941,32 +942,37 @@ static int test_pcomp(struct crypto_pcom
+ req.next_out = result;
+ req.avail_out = ctemplate[i].outlen / 2;
+
+- error = crypto_compress_update(tfm, &req);
+- if (error && (error != -EAGAIN || req.avail_in)) {
++ res = crypto_compress_update(tfm, &req);
++ if (res < 0 && (res != -EAGAIN || req.avail_in)) {
+ pr_err("alg: pcomp: compression update failed on test "
+- "%d for %s: error=%d\n", i + 1, algo, error);
+- return error;
++ "%d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
++ if (res > 0)
++ produced += res;
+
+ /* Add remaining input data */
+ req.avail_in += (ctemplate[i].inlen + 1) / 2;
+
+- error = crypto_compress_update(tfm, &req);
+- if (error && (error != -EAGAIN || req.avail_in)) {
++ res = crypto_compress_update(tfm, &req);
++ if (res < 0 && (res != -EAGAIN || req.avail_in)) {
+ pr_err("alg: pcomp: compression update failed on test "
+- "%d for %s: error=%d\n", i + 1, algo, error);
+- return error;
++ "%d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
++ if (res > 0)
++ produced += res;
+
+ /* Provide remaining output space */
+ req.avail_out += COMP_BUF_SIZE - ctemplate[i].outlen / 2;
+
+- error = crypto_compress_final(tfm, &req);
+- if (error) {
++ res = crypto_compress_final(tfm, &req);
++ if (res < 0) {
+ pr_err("alg: pcomp: compression final failed on test "
+- "%d for %s: error=%d\n", i + 1, algo, error);
+- return error;
++ "%d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
++ produced += res;
+
+ if (COMP_BUF_SIZE - req.avail_out != ctemplate[i].outlen) {
+ pr_err("alg: comp: Compression test %d failed for %s: "
+@@ -976,6 +982,13 @@ static int test_pcomp(struct crypto_pcom
+ return -EINVAL;
+ }
+
++ if (produced != ctemplate[i].outlen) {
++ pr_err("alg: comp: Compression test %d failed for %s: "
++ "returned len = %u (expected %d)\n", i + 1,
++ algo, produced, ctemplate[i].outlen);
++ return -EINVAL;
++ }
++
+ if (memcmp(result, ctemplate[i].output, ctemplate[i].outlen)) {
+ pr_err("alg: pcomp: Compression test %d failed for "
+ "%s\n", i + 1, algo);
+@@ -986,21 +999,21 @@ static int test_pcomp(struct crypto_pcom
+
+ for (i = 0; i < dtcount; i++) {
+ struct comp_request req;
++ unsigned int produced = 0;
+
+- error = crypto_decompress_setup(tfm, dtemplate[i].params,
+- dtemplate[i].paramsize);
+- if (error) {
++ res = crypto_decompress_setup(tfm, dtemplate[i].params,
++ dtemplate[i].paramsize);
++ if (res) {
+ pr_err("alg: pcomp: decompression setup failed on "
+- "test %d for %s: error=%d\n", i + 1, algo,
+- error);
+- return error;
++ "test %d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
+
+- error = crypto_decompress_init(tfm);
+- if (error) {
++ res = crypto_decompress_init(tfm);
++ if (res) {
+ pr_err("alg: pcomp: decompression init failed on test "
+- "%d for %s: error=%d\n", i + 1, algo, error);
+- return error;
++ "%d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
+
+ memset(result, 0, sizeof(result));
+@@ -1010,35 +1023,38 @@ static int test_pcomp(struct crypto_pcom
+ req.next_out = result;
+ req.avail_out = dtemplate[i].outlen / 2;
+
+- error = crypto_decompress_update(tfm, &req);
+- if (error && (error != -EAGAIN || req.avail_in)) {
++ res = crypto_decompress_update(tfm, &req);
++ if (res < 0 && (res != -EAGAIN || req.avail_in)) {
+ pr_err("alg: pcomp: decompression update failed on "
+- "test %d for %s: error=%d\n", i + 1, algo,
+- error);
+- return error;
++ "test %d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
++ if (res > 0)
++ produced += res;
+
+ /* Add remaining input data */
+ req.avail_in += (dtemplate[i].inlen + 1) / 2;
+
+- error = crypto_decompress_update(tfm, &req);
+- if (error && (error != -EAGAIN || req.avail_in)) {
++ res = crypto_decompress_update(tfm, &req);
++ if (res < 0 && (res != -EAGAIN || req.avail_in)) {
+ pr_err("alg: pcomp: decompression update failed on "
+- "test %d for %s: error=%d\n", i + 1, algo,
+- error);
+- return error;
++ "test %d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
++ if (res > 0)
++ produced += res;
+
+ /* Provide remaining output space */
+ req.avail_out += COMP_BUF_SIZE - dtemplate[i].outlen / 2;
+
+- error = crypto_decompress_final(tfm, &req);
+- if (error && (error != -EAGAIN || req.avail_in)) {
++ res = crypto_decompress_final(tfm, &req);
++ if (res < 0 && (res != -EAGAIN || req.avail_in)) {
+ pr_err("alg: pcomp: decompression final failed on "
+- "test %d for %s: error=%d\n", i + 1, algo,
+- error);
+- return error;
++ "test %d for %s: error=%d\n", i + 1, algo, res);
++ return res;
+ }
++ if (res > 0)
++ produced += res;
+
+ if (COMP_BUF_SIZE - req.avail_out != dtemplate[i].outlen) {
+ pr_err("alg: comp: Decompression test %d failed for "
+@@ -1048,6 +1064,13 @@ static int test_pcomp(struct crypto_pcom
+ return -EINVAL;
+ }
+
++ if (produced != dtemplate[i].outlen) {
++ pr_err("alg: comp: Decompression test %d failed for "
++ "%s: returned len = %u (expected %d)\n", i + 1,
++ algo, produced, dtemplate[i].outlen);
++ return -EINVAL;
++ }
++
+ if (memcmp(result, dtemplate[i].output, dtemplate[i].outlen)) {
+ pr_err("alg: pcomp: Decompression test %d failed for "
+ "%s\n", i + 1, algo);
+--- a/crypto/zlib.c
++++ b/crypto/zlib.c
+@@ -165,15 +165,15 @@ static int zlib_compress_update(struct c
+ return -EINVAL;
+ }
+
++ ret = req->avail_out - stream->avail_out;
+ pr_debug("avail_in %u, avail_out %u (consumed %u, produced %u)\n",
+ stream->avail_in, stream->avail_out,
+- req->avail_in - stream->avail_in,
+- req->avail_out - stream->avail_out);
++ req->avail_in - stream->avail_in, ret);
+ req->next_in = stream->next_in;
+ req->avail_in = stream->avail_in;
+ req->next_out = stream->next_out;
+ req->avail_out = stream->avail_out;
+- return 0;
++ return ret;
+ }
+
+ static int zlib_compress_final(struct crypto_pcomp *tfm,
+@@ -195,15 +195,15 @@ static int zlib_compress_final(struct cr
+ return -EINVAL;
+ }
+
++ ret = req->avail_out - stream->avail_out;
+ pr_debug("avail_in %u, avail_out %u (consumed %u, produced %u)\n",
+ stream->avail_in, stream->avail_out,
+- req->avail_in - stream->avail_in,
+- req->avail_out - stream->avail_out);
++ req->avail_in - stream->avail_in, ret);
+ req->next_in = stream->next_in;
+ req->avail_in = stream->avail_in;
+ req->next_out = stream->next_out;
+ req->avail_out = stream->avail_out;
+- return 0;
++ return ret;
+ }
+
+
+@@ -280,15 +280,15 @@ static int zlib_decompress_update(struct
+ return -EINVAL;
+ }
+
++ ret = req->avail_out - stream->avail_out;
+ pr_debug("avail_in %u, avail_out %u (consumed %u, produced %u)\n",
+ stream->avail_in, stream->avail_out,
+- req->avail_in - stream->avail_in,
+- req->avail_out - stream->avail_out);
++ req->avail_in - stream->avail_in, ret);
+ req->next_in = stream->next_in;
+ req->avail_in = stream->avail_in;
+ req->next_out = stream->next_out;
+ req->avail_out = stream->avail_out;
+- return 0;
++ return ret;
+ }
+
+ static int zlib_decompress_final(struct crypto_pcomp *tfm,
+@@ -328,15 +328,15 @@ static int zlib_decompress_final(struct
+ return -EINVAL;
+ }
+
++ ret = req->avail_out - stream->avail_out;
+ pr_debug("avail_in %u, avail_out %u (consumed %u, produced %u)\n",
+ stream->avail_in, stream->avail_out,
+- req->avail_in - stream->avail_in,
+- req->avail_out - stream->avail_out);
++ req->avail_in - stream->avail_in, ret);
+ req->next_in = stream->next_in;
+ req->avail_in = stream->avail_in;
+ req->next_out = stream->next_out;
+ req->avail_out = stream->avail_out;
+- return 0;
++ return ret;
+ }
+
+