Message ID | 106621382627723@web13g.yandex.ru |
---|---|
State | New, archived |
Headers | show |
24.10.2013, 19:15, "Konstantin Tokarev" <annulen@yandex.ru>: > Attached patch to crypto API wrapper for lz4hc seems to fix the issue. I can save > and read files on LZ4HC-compressed volume, and I'm running on LZ4HC-compressed rootfs, > flashed from mkfs.ubifs generated image (patch by Elie De Brauwer). My software > works correctly. > > Unfortunately, on my board LZ4HC-compressed UBIFS volume performs noticeable worse > than LZO, while still faster than zlib. I guess the reason is that CPU is no longer a > bottleneck for my system, but NAND speed. > > Thank you all for your help! Can anyone review the correctness of my patch? Looks like API of LZ4 decompressor is used wrong way in crypto API.
2013/10/28 Konstantin Tokarev <annulen@yandex.ru>: > > > 24.10.2013, 19:15, "Konstantin Tokarev" <annulen@yandex.ru>: >> Attached patch to crypto API wrapper for lz4hc seems to fix the issue. I can save >> and read files on LZ4HC-compressed volume, and I'm running on LZ4HC-compressed rootfs, >> flashed from mkfs.ubifs generated image (patch by Elie De Brauwer). My software >> works correctly. >> >> Unfortunately, on my board LZ4HC-compressed UBIFS volume performs noticeable worse >> than LZO, while still faster than zlib. I guess the reason is that CPU is no longer a >> bottleneck for my system, but NAND speed. >> >> Thank you all for your help! > > Can anyone review the correctness of my patch? Looks like API of LZ4 decompressor is > used wrong way in crypto API. Can you make a formal submission of it? That would probably help reviewing it. -- Florian
diff --git a/crypto/lz4.c b/crypto/lz4.c index 4586dd1..91a0613 100644 --- a/crypto/lz4.c +++ b/crypto/lz4.c @@ -66,9 +66,8 @@ static int lz4_decompress_crypto(struct crypto_tfm *tfm, const u8 *src, { int err; size_t tmp_len = *dlen; - size_t __slen = slen; - err = lz4_decompress(src, &__slen, dst, tmp_len); + err = lz4_decompress_unknownoutputsize(src, slen, dst, &tmp_len); if (err < 0) return -EINVAL; diff --git a/crypto/lz4hc.c b/crypto/lz4hc.c index 151ba31..9987741 100644 --- a/crypto/lz4hc.c +++ b/crypto/lz4hc.c @@ -66,9 +66,8 @@ static int lz4hc_decompress_crypto(struct crypto_tfm *tfm, const u8 *src, { int err; size_t tmp_len = *dlen; - size_t __slen = slen; - err = lz4_decompress(src, &__slen, dst, tmp_len); + err = lz4_decompress_unknownoutputsize(src, slen, dst, &tmp_len); if (err < 0) return -EINVAL;