summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Schmidt <4sschmid@informatik.uni-hamburg.de>2017-02-24 18:01:19 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-02-24 20:46:57 -0500
commit73a15ac6d5413caaee95979e318df58d4ee6d9a3 (patch)
tree0b058fd7c7501f341069358ecf7d1d118e94ad06
parente23d54e48346e775be53b3cc25a95d65da960393 (diff)
crypto: change LZ4 modules to work with new LZ4 module version
Update the crypto modules using LZ4 compression as well as the test cases in testmgr.h to work with the new LZ4 module version. Link: http://lkml.kernel.org/r/1486321748-19085-4-git-send-email-4sschmid@informatik.uni-hamburg.de Signed-off-by: Sven Schmidt <4sschmid@informatik.uni-hamburg.de> Cc: Bongkyu Kim <bongkyu.kim@lge.com> Cc: Rui Salvaterra <rsalvaterra@gmail.com> Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: David S. Miller <davem@davemloft.net> Cc: Anton Vorontsov <anton@enomsg.org> Cc: Colin Cross <ccross@android.com> Cc: Kees Cook <keescook@chromium.org> Cc: Tony Luck <tony.luck@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--crypto/lz4.c23
-rw-r--r--crypto/lz4hc.c23
-rw-r--r--crypto/testmgr.h142
3 files changed, 120 insertions, 68 deletions
diff --git a/crypto/lz4.c b/crypto/lz4.c
index 99c1b2cc2976..71eff9b01b12 100644
--- a/crypto/lz4.c
+++ b/crypto/lz4.c
@@ -66,15 +66,13 @@ static void lz4_exit(struct crypto_tfm *tfm)
66static int __lz4_compress_crypto(const u8 *src, unsigned int slen, 66static int __lz4_compress_crypto(const u8 *src, unsigned int slen,
67 u8 *dst, unsigned int *dlen, void *ctx) 67 u8 *dst, unsigned int *dlen, void *ctx)
68{ 68{
69 size_t tmp_len = *dlen; 69 int out_len = LZ4_compress_default(src, dst,
70 int err; 70 slen, *dlen, ctx);
71 71
72 err = lz4_compress(src, slen, dst, &tmp_len, ctx); 72 if (!out_len)
73
74 if (err < 0)
75 return -EINVAL; 73 return -EINVAL;
76 74
77 *dlen = tmp_len; 75 *dlen = out_len;
78 return 0; 76 return 0;
79} 77}
80 78
@@ -96,16 +94,13 @@ static int lz4_compress_crypto(struct crypto_tfm *tfm, const u8 *src,
96static int __lz4_decompress_crypto(const u8 *src, unsigned int slen, 94static int __lz4_decompress_crypto(const u8 *src, unsigned int slen,
97 u8 *dst, unsigned int *dlen, void *ctx) 95 u8 *dst, unsigned int *dlen, void *ctx)
98{ 96{
99 int err; 97 int out_len = LZ4_decompress_safe(src, dst, slen, *dlen);
100 size_t tmp_len = *dlen;
101 size_t __slen = slen;
102 98
103 err = lz4_decompress_unknownoutputsize(src, __slen, dst, &tmp_len); 99 if (out_len < 0)
104 if (err < 0) 100 return out_len;
105 return -EINVAL;
106 101
107 *dlen = tmp_len; 102 *dlen = out_len;
108 return err; 103 return 0;
109} 104}
110 105
111static int lz4_sdecompress(struct crypto_scomp *tfm, const u8 *src, 106static int lz4_sdecompress(struct crypto_scomp *tfm, const u8 *src,
diff --git a/crypto/lz4hc.c b/crypto/lz4hc.c
index 75ffc4a3f786..03a34a8109c0 100644
--- a/crypto/lz4hc.c
+++ b/crypto/lz4hc.c
@@ -65,15 +65,13 @@ static void lz4hc_exit(struct crypto_tfm *tfm)
65static int __lz4hc_compress_crypto(const u8 *src, unsigned int slen, 65static int __lz4hc_compress_crypto(const u8 *src, unsigned int slen,
66 u8 *dst, unsigned int *dlen, void *ctx) 66 u8 *dst, unsigned int *dlen, void *ctx)
67{ 67{
68 size_t tmp_len = *dlen; 68 int out_len = LZ4_compress_HC(src, dst, slen,
69 int err; 69 *dlen, LZ4HC_DEFAULT_CLEVEL, ctx);
70 70
71 err = lz4hc_compress(src, slen, dst, &tmp_len, ctx); 71 if (!out_len)
72
73 if (err < 0)
74 return -EINVAL; 72 return -EINVAL;
75 73
76 *dlen = tmp_len; 74 *dlen = out_len;
77 return 0; 75 return 0;
78} 76}
79 77
@@ -97,16 +95,13 @@ static int lz4hc_compress_crypto(struct crypto_tfm *tfm, const u8 *src,
97static int __lz4hc_decompress_crypto(const u8 *src, unsigned int slen, 95static int __lz4hc_decompress_crypto(const u8 *src, unsigned int slen,
98 u8 *dst, unsigned int *dlen, void *ctx) 96 u8 *dst, unsigned int *dlen, void *ctx)
99{ 97{
100 int err; 98 int out_len = LZ4_decompress_safe(src, dst, slen, *dlen);
101 size_t tmp_len = *dlen;
102 size_t __slen = slen;
103 99
104 err = lz4_decompress_unknownoutputsize(src, __slen, dst, &tmp_len); 100 if (out_len < 0)
105 if (err < 0) 101 return out_len;
106 return -EINVAL;
107 102
108 *dlen = tmp_len; 103 *dlen = out_len;
109 return err; 104 return 0;
110} 105}
111 106
112static int lz4hc_sdecompress(struct crypto_scomp *tfm, const u8 *src, 107static int lz4hc_sdecompress(struct crypto_scomp *tfm, const u8 *src,
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index f85e51cf7dcc..006ecc434351 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -34293,61 +34293,123 @@ static struct hash_testvec bfin_crc_tv_template[] = {
34293 34293
34294static struct comp_testvec lz4_comp_tv_template[] = { 34294static struct comp_testvec lz4_comp_tv_template[] = {
34295 { 34295 {
34296 .inlen = 70, 34296 .inlen = 255,
34297 .outlen = 45, 34297 .outlen = 218,
34298 .input = "Join us now and share the software " 34298 .input = "LZ4 is lossless compression algorithm, providing"
34299 "Join us now and share the software ", 34299 " compression speed at 400 MB/s per core, scalable "
34300 .output = "\xf0\x10\x4a\x6f\x69\x6e\x20\x75" 34300 "with multi-cores CPU. It features an extremely fast "
34301 "\x73\x20\x6e\x6f\x77\x20\x61\x6e" 34301 "decoder, with speed in multiple GB/s per core, "
34302 "\x64\x20\x73\x68\x61\x72\x65\x20" 34302 "typically reaching RAM speed limits on multi-core "
34303 "\x74\x68\x65\x20\x73\x6f\x66\x74" 34303 "systems.",
34304 "\x77\x0d\x00\x0f\x23\x00\x0b\x50" 34304 .output = "\xf9\x21\x4c\x5a\x34\x20\x69\x73\x20\x6c\x6f\x73\x73"
34305 "\x77\x61\x72\x65\x20", 34305 "\x6c\x65\x73\x73\x20\x63\x6f\x6d\x70\x72\x65\x73\x73"
34306 "\x69\x6f\x6e\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d"
34307 "\x2c\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x21\x00"
34308 "\xf0\x21\x73\x70\x65\x65\x64\x20\x61\x74\x20\x34\x30"
34309 "\x30\x20\x4d\x42\x2f\x73\x20\x70\x65\x72\x20\x63\x6f"
34310 "\x72\x65\x2c\x20\x73\x63\x61\x6c\x61\x62\x6c\x65\x20"
34311 "\x77\x69\x74\x68\x20\x6d\x75\x6c\x74\x69\x2d\x1a\x00"
34312 "\xf0\x00\x73\x20\x43\x50\x55\x2e\x20\x49\x74\x20\x66"
34313 "\x65\x61\x74\x75\x11\x00\xf2\x0b\x61\x6e\x20\x65\x78"
34314 "\x74\x72\x65\x6d\x65\x6c\x79\x20\x66\x61\x73\x74\x20"
34315 "\x64\x65\x63\x6f\x64\x65\x72\x2c\x3d\x00\x02\x67\x00"
34316 "\x22\x69\x6e\x46\x00\x5a\x70\x6c\x65\x20\x47\x6c\x00"
34317 "\xf0\x00\x74\x79\x70\x69\x63\x61\x6c\x6c\x79\x20\x72"
34318 "\x65\x61\x63\x68\xa7\x00\x33\x52\x41\x4d\x38\x00\x83"
34319 "\x6c\x69\x6d\x69\x74\x73\x20\x6f\x3f\x00\x01\x85\x00"
34320 "\x90\x20\x73\x79\x73\x74\x65\x6d\x73\x2e",
34321
34306 }, 34322 },
34307}; 34323};
34308 34324
34309static struct comp_testvec lz4_decomp_tv_template[] = { 34325static struct comp_testvec lz4_decomp_tv_template[] = {
34310 { 34326 {
34311 .inlen = 45, 34327 .inlen = 218,
34312 .outlen = 70, 34328 .outlen = 255,
34313 .input = "\xf0\x10\x4a\x6f\x69\x6e\x20\x75" 34329 .input = "\xf9\x21\x4c\x5a\x34\x20\x69\x73\x20\x6c\x6f\x73\x73"
34314 "\x73\x20\x6e\x6f\x77\x20\x61\x6e" 34330 "\x6c\x65\x73\x73\x20\x63\x6f\x6d\x70\x72\x65\x73\x73"
34315 "\x64\x20\x73\x68\x61\x72\x65\x20" 34331 "\x69\x6f\x6e\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d"
34316 "\x74\x68\x65\x20\x73\x6f\x66\x74" 34332 "\x2c\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x21\x00"
34317 "\x77\x0d\x00\x0f\x23\x00\x0b\x50" 34333 "\xf0\x21\x73\x70\x65\x65\x64\x20\x61\x74\x20\x34\x30"
34318 "\x77\x61\x72\x65\x20", 34334 "\x30\x20\x4d\x42\x2f\x73\x20\x70\x65\x72\x20\x63\x6f"
34319 .output = "Join us now and share the software " 34335 "\x72\x65\x2c\x20\x73\x63\x61\x6c\x61\x62\x6c\x65\x20"
34320 "Join us now and share the software ", 34336 "\x77\x69\x74\x68\x20\x6d\x75\x6c\x74\x69\x2d\x1a\x00"
34337 "\xf0\x00\x73\x20\x43\x50\x55\x2e\x20\x49\x74\x20\x66"
34338 "\x65\x61\x74\x75\x11\x00\xf2\x0b\x61\x6e\x20\x65\x78"
34339 "\x74\x72\x65\x6d\x65\x6c\x79\x20\x66\x61\x73\x74\x20"
34340 "\x64\x65\x63\x6f\x64\x65\x72\x2c\x3d\x00\x02\x67\x00"
34341 "\x22\x69\x6e\x46\x00\x5a\x70\x6c\x65\x20\x47\x6c\x00"
34342 "\xf0\x00\x74\x79\x70\x69\x63\x61\x6c\x6c\x79\x20\x72"
34343 "\x65\x61\x63\x68\xa7\x00\x33\x52\x41\x4d\x38\x00\x83"
34344 "\x6c\x69\x6d\x69\x74\x73\x20\x6f\x3f\x00\x01\x85\x00"
34345 "\x90\x20\x73\x79\x73\x74\x65\x6d\x73\x2e",
34346 .output = "LZ4 is lossless compression algorithm, providing"
34347 " compression speed at 400 MB/s per core, scalable "
34348 "with multi-cores CPU. It features an extremely fast "
34349 "decoder, with speed in multiple GB/s per core, "
34350 "typically reaching RAM speed limits on multi-core "
34351 "systems.",
34321 }, 34352 },
34322}; 34353};
34323 34354
34324static struct comp_testvec lz4hc_comp_tv_template[] = { 34355static struct comp_testvec lz4hc_comp_tv_template[] = {
34325 { 34356 {
34326 .inlen = 70, 34357 .inlen = 255,
34327 .outlen = 45, 34358 .outlen = 216,
34328 .input = "Join us now and share the software " 34359 .input = "LZ4 is lossless compression algorithm, providing"
34329 "Join us now and share the software ", 34360 " compression speed at 400 MB/s per core, scalable "
34330 .output = "\xf0\x10\x4a\x6f\x69\x6e\x20\x75" 34361 "with multi-cores CPU. It features an extremely fast "
34331 "\x73\x20\x6e\x6f\x77\x20\x61\x6e" 34362 "decoder, with speed in multiple GB/s per core, "
34332 "\x64\x20\x73\x68\x61\x72\x65\x20" 34363 "typically reaching RAM speed limits on multi-core "
34333 "\x74\x68\x65\x20\x73\x6f\x66\x74" 34364 "systems.",
34334 "\x77\x0d\x00\x0f\x23\x00\x0b\x50" 34365 .output = "\xf9\x21\x4c\x5a\x34\x20\x69\x73\x20\x6c\x6f\x73\x73"
34335 "\x77\x61\x72\x65\x20", 34366 "\x6c\x65\x73\x73\x20\x63\x6f\x6d\x70\x72\x65\x73\x73"
34367 "\x69\x6f\x6e\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d"
34368 "\x2c\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x21\x00"
34369 "\xf0\x21\x73\x70\x65\x65\x64\x20\x61\x74\x20\x34\x30"
34370 "\x30\x20\x4d\x42\x2f\x73\x20\x70\x65\x72\x20\x63\x6f"
34371 "\x72\x65\x2c\x20\x73\x63\x61\x6c\x61\x62\x6c\x65\x20"
34372 "\x77\x69\x74\x68\x20\x6d\x75\x6c\x74\x69\x2d\x1a\x00"
34373 "\xf0\x00\x73\x20\x43\x50\x55\x2e\x20\x49\x74\x20\x66"
34374 "\x65\x61\x74\x75\x11\x00\xf2\x0b\x61\x6e\x20\x65\x78"
34375 "\x74\x72\x65\x6d\x65\x6c\x79\x20\x66\x61\x73\x74\x20"
34376 "\x64\x65\x63\x6f\x64\x65\x72\x2c\x3d\x00\x02\x67\x00"
34377 "\x22\x69\x6e\x46\x00\x5a\x70\x6c\x65\x20\x47\x6c\x00"
34378 "\xf0\x00\x74\x79\x70\x69\x63\x61\x6c\x6c\x79\x20\x72"
34379 "\x65\x61\x63\x68\xa7\x00\x33\x52\x41\x4d\x38\x00\x97"
34380 "\x6c\x69\x6d\x69\x74\x73\x20\x6f\x6e\x85\x00\x90\x20"
34381 "\x73\x79\x73\x74\x65\x6d\x73\x2e",
34382
34336 }, 34383 },
34337}; 34384};
34338 34385
34339static struct comp_testvec lz4hc_decomp_tv_template[] = { 34386static struct comp_testvec lz4hc_decomp_tv_template[] = {
34340 { 34387 {
34341 .inlen = 45, 34388 .inlen = 216,
34342 .outlen = 70, 34389 .outlen = 255,
34343 .input = "\xf0\x10\x4a\x6f\x69\x6e\x20\x75" 34390 .input = "\xf9\x21\x4c\x5a\x34\x20\x69\x73\x20\x6c\x6f\x73\x73"
34344 "\x73\x20\x6e\x6f\x77\x20\x61\x6e" 34391 "\x6c\x65\x73\x73\x20\x63\x6f\x6d\x70\x72\x65\x73\x73"
34345 "\x64\x20\x73\x68\x61\x72\x65\x20" 34392 "\x69\x6f\x6e\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d"
34346 "\x74\x68\x65\x20\x73\x6f\x66\x74" 34393 "\x2c\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x21\x00"
34347 "\x77\x0d\x00\x0f\x23\x00\x0b\x50" 34394 "\xf0\x21\x73\x70\x65\x65\x64\x20\x61\x74\x20\x34\x30"
34348 "\x77\x61\x72\x65\x20", 34395 "\x30\x20\x4d\x42\x2f\x73\x20\x70\x65\x72\x20\x63\x6f"
34349 .output = "Join us now and share the software " 34396 "\x72\x65\x2c\x20\x73\x63\x61\x6c\x61\x62\x6c\x65\x20"
34350 "Join us now and share the software ", 34397 "\x77\x69\x74\x68\x20\x6d\x75\x6c\x74\x69\x2d\x1a\x00"
34398 "\xf0\x00\x73\x20\x43\x50\x55\x2e\x20\x49\x74\x20\x66"
34399 "\x65\x61\x74\x75\x11\x00\xf2\x0b\x61\x6e\x20\x65\x78"
34400 "\x74\x72\x65\x6d\x65\x6c\x79\x20\x66\x61\x73\x74\x20"
34401 "\x64\x65\x63\x6f\x64\x65\x72\x2c\x3d\x00\x02\x67\x00"
34402 "\x22\x69\x6e\x46\x00\x5a\x70\x6c\x65\x20\x47\x6c\x00"
34403 "\xf0\x00\x74\x79\x70\x69\x63\x61\x6c\x6c\x79\x20\x72"
34404 "\x65\x61\x63\x68\xa7\x00\x33\x52\x41\x4d\x38\x00\x97"
34405 "\x6c\x69\x6d\x69\x74\x73\x20\x6f\x6e\x85\x00\x90\x20"
34406 "\x73\x79\x73\x74\x65\x6d\x73\x2e",
34407 .output = "LZ4 is lossless compression algorithm, providing"
34408 " compression speed at 400 MB/s per core, scalable "
34409 "with multi-cores CPU. It features an extremely fast "
34410 "decoder, with speed in multiple GB/s per core, "
34411 "typically reaching RAM speed limits on multi-core "
34412 "systems.",
34351 }, 34413 },
34352}; 34414};
34353 34415