diff options
Diffstat (limited to 'target/linux')
25 files changed, 0 insertions, 745 deletions
diff --git a/target/linux/apm821xx/config-4.4 b/target/linux/apm821xx/config-4.4 index 797cdae..68e22ec 100644 --- a/target/linux/apm821xx/config-4.4 +++ b/target/linux/apm821xx/config-4.4 @@ -59,7 +59,6 @@ CONFIG_CRYPTO_MD5_PPC=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_SHA1_PPC=y CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_XZ=y CONFIG_DECOMPRESS_GZIP=y # CONFIG_DEFAULT_UIMAGE is not set CONFIG_DTC=y @@ -315,7 +314,6 @@ CONFIG_TICK_CPU_ACCOUNTING=y # CONFIG_UBIFS_FS is not set # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set # CONFIG_UBIFS_FS_LZO is not set -# CONFIG_UBIFS_FS_XZ is not set # CONFIG_UBIFS_FS_ZLIB is not set CONFIG_USB_SUPPORT=y CONFIG_VDSO32=y diff --git a/target/linux/at91/config-4.4 b/target/linux/at91/config-4.4 index 37b98c1..86d3a05 100644 --- a/target/linux/at91/config-4.4 +++ b/target/linux/at91/config-4.4 @@ -257,7 +257,6 @@ CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y -# CONFIG_UBIFS_FS_XZ is not set CONFIG_UBIFS_FS_ZLIB=y CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" CONFIG_USB_SUPPORT=y diff --git a/target/linux/bcm53xx/config-4.4 b/target/linux/bcm53xx/config-4.4 index e6e6e50..c178271 100644 --- a/target/linux/bcm53xx/config-4.4 +++ b/target/linux/bcm53xx/config-4.4 @@ -104,7 +104,6 @@ CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_XZ=y CONFIG_DCACHE_WORD_ACCESS=y CONFIG_DEBUG_BCM_5301X=y CONFIG_DEBUG_INFO=y @@ -309,7 +308,6 @@ CONFIG_TREE_RCU=y CONFIG_UBIFS_FS=y # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_XZ=y CONFIG_UBIFS_FS_ZLIB=y CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" CONFIG_USB_SUPPORT=y diff --git a/target/linux/generic/config-3.18 b/target/linux/generic/config-3.18 index c61a4b3..3734416 100644 --- a/target/linux/generic/config-3.18 +++ b/target/linux/generic/config-3.18 @@ -790,7 +790,6 @@ CONFIG_CRYPTO_PCRYPT=y # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_XCBC is not set # CONFIG_CRYPTO_XTS is not set -# CONFIG_CRYPTO_XZ is not set # CONFIG_CRYPTO_ZLIB is not set # CONFIG_CRYSTALHD is not set # CONFIG_CS5535_MFGPT is not set diff --git a/target/linux/generic/config-4.1 b/target/linux/generic/config-4.1 index 4fae342..222ba26 100644 --- a/target/linux/generic/config-4.1 +++ b/target/linux/generic/config-4.1 @@ -822,7 +822,6 @@ CONFIG_CRYPTO_PCRYPT=y # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_XCBC is not set # CONFIG_CRYPTO_XTS is not set -# CONFIG_CRYPTO_XZ is not set # CONFIG_CRYPTO_ZLIB is not set # CONFIG_CRYSTALHD is not set # CONFIG_CS5535_MFGPT is not set diff --git a/target/linux/generic/config-4.4 b/target/linux/generic/config-4.4 index 8ce316b..a654878 100644 --- a/target/linux/generic/config-4.4 +++ b/target/linux/generic/config-4.4 @@ -823,7 +823,6 @@ CONFIG_CRYPTO_PCRYPT=y # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_XCBC is not set # CONFIG_CRYPTO_XTS is not set -# CONFIG_CRYPTO_XZ is not set # CONFIG_CRYPTO_ZLIB is not set # CONFIG_CS5535_MFGPT is not set # CONFIG_CS89x0 is not set diff --git a/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch b/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch deleted file mode 100644 index 00b0b7c..0000000 --- a/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch +++ /dev/null @@ -1,146 +0,0 @@ ---- a/crypto/Kconfig -+++ b/crypto/Kconfig -@@ -1437,6 +1437,13 @@ config CRYPTO_LZ4HC - help - This is the LZ4 high compression mode algorithm. - -+config CRYPTO_XZ -+ tristate "XZ compression algorithm" -+ select CRYPTO_ALGAPI -+ select XZ_DEC -+ help -+ This is the XZ algorithm. Only decompression is supported for now. -+ - comment "Random Number Generation" - - config CRYPTO_ANSI_CPRNG ---- a/crypto/Makefile -+++ b/crypto/Makefile -@@ -89,6 +89,7 @@ obj-$(CONFIG_CRYPTO_AUTHENC) += authenc. - obj-$(CONFIG_CRYPTO_LZO) += lzo.o - obj-$(CONFIG_CRYPTO_LZ4) += lz4.o - obj-$(CONFIG_CRYPTO_LZ4HC) += lz4hc.o -+obj-$(CONFIG_CRYPTO_XZ) += xz.o - obj-$(CONFIG_CRYPTO_842) += 842.o - obj-$(CONFIG_CRYPTO_RNG2) += rng.o - obj-$(CONFIG_CRYPTO_RNG2) += krng.o ---- /dev/null -+++ b/crypto/xz.c -@@ -0,0 +1,117 @@ -+/* -+ * Cryptographic API. -+ * -+ * XZ decompression support. -+ * -+ * Copyright (c) 2012 Gabor Juhos <juhosg@openwrt.org> -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ */ -+#include <linux/init.h> -+#include <linux/module.h> -+#include <linux/crypto.h> -+#include <linux/xz.h> -+#include <linux/interrupt.h> -+#include <linux/mm.h> -+#include <linux/net.h> -+ -+struct xz_comp_ctx { -+ struct xz_dec *decomp_state; -+ struct xz_buf decomp_buf; -+}; -+ -+static int crypto_xz_decomp_init(struct xz_comp_ctx *ctx) -+{ -+ ctx->decomp_state = xz_dec_init(XZ_SINGLE, 0); -+ if (!ctx->decomp_state) -+ return -ENOMEM; -+ -+ return 0; -+} -+ -+static void crypto_xz_decomp_exit(struct xz_comp_ctx *ctx) -+{ -+ xz_dec_end(ctx->decomp_state); -+} -+ -+static int crypto_xz_init(struct crypto_tfm *tfm) -+{ -+ struct xz_comp_ctx *ctx = crypto_tfm_ctx(tfm); -+ -+ return crypto_xz_decomp_init(ctx); -+} -+ -+static void crypto_xz_exit(struct crypto_tfm *tfm) -+{ -+ struct xz_comp_ctx *ctx = crypto_tfm_ctx(tfm); -+ -+ crypto_xz_decomp_exit(ctx); -+} -+ -+static int crypto_xz_compress(struct crypto_tfm *tfm, const u8 *src, -+ unsigned int slen, u8 *dst, unsigned int *dlen) -+{ -+ return -EOPNOTSUPP; -+} -+ -+static int crypto_xz_decompress(struct crypto_tfm *tfm, const u8 *src, -+ unsigned int slen, u8 *dst, unsigned int *dlen) -+{ -+ struct xz_comp_ctx *dctx = crypto_tfm_ctx(tfm); -+ struct xz_buf *xz_buf = &dctx->decomp_buf; -+ int ret; -+ -+ memset(xz_buf, '\0', sizeof(struct xz_buf)); -+ -+ xz_buf->in = (u8 *) src; -+ xz_buf->in_pos = 0; -+ xz_buf->in_size = slen; -+ xz_buf->out = (u8 *) dst; -+ xz_buf->out_pos = 0; -+ xz_buf->out_size = *dlen; -+ -+ ret = xz_dec_run(dctx->decomp_state, xz_buf); -+ if (ret != XZ_STREAM_END) { -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ *dlen = xz_buf->out_pos; -+ ret = 0; -+ -+out: -+ return ret; -+} -+ -+static struct crypto_alg crypto_xz_alg = { -+ .cra_name = "xz", -+ .cra_flags = CRYPTO_ALG_TYPE_COMPRESS, -+ .cra_ctxsize = sizeof(struct xz_comp_ctx), -+ .cra_module = THIS_MODULE, -+ .cra_list = LIST_HEAD_INIT(crypto_xz_alg.cra_list), -+ .cra_init = crypto_xz_init, -+ .cra_exit = crypto_xz_exit, -+ .cra_u = { .compress = { -+ .coa_compress = crypto_xz_compress, -+ .coa_decompress = crypto_xz_decompress } } -+}; -+ -+static int __init crypto_xz_mod_init(void) -+{ -+ return crypto_register_alg(&crypto_xz_alg); -+} -+ -+static void __exit crypto_xz_mod_exit(void) -+{ -+ crypto_unregister_alg(&crypto_xz_alg); -+} -+ -+module_init(crypto_xz_mod_init); -+module_exit(crypto_xz_mod_exit); -+ -+MODULE_LICENSE("GPL v2"); -+MODULE_DESCRIPTION("Crypto XZ decompression support"); -+MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>"); diff --git a/target/linux/generic/patches-3.18/541-ubifs-xz-decompression-support.patch b/target/linux/generic/patches-3.18/541-ubifs-xz-decompression-support.patch deleted file mode 100644 index f85689c..0000000 --- a/target/linux/generic/patches-3.18/541-ubifs-xz-decompression-support.patch +++ /dev/null @@ -1,92 +0,0 @@ ---- a/fs/ubifs/Kconfig -+++ b/fs/ubifs/Kconfig -@@ -5,8 +5,10 @@ config UBIFS_FS - select CRYPTO if UBIFS_FS_ADVANCED_COMPR - select CRYPTO if UBIFS_FS_LZO - select CRYPTO if UBIFS_FS_ZLIB -+ select CRYPTO if UBIFS_FS_XZ - select CRYPTO_LZO if UBIFS_FS_LZO - select CRYPTO_DEFLATE if UBIFS_FS_ZLIB -+ select CRYPTO_XZ if UBIFS_FS_XZ - depends on MTD_UBI - help - UBIFS is a file system for flash devices which works on top of UBI. -@@ -35,3 +37,12 @@ config UBIFS_FS_ZLIB - default y - help - Zlib compresses better than LZO but it is slower. Say 'Y' if unsure. -+ -+config UBIFS_FS_XZ -+ bool "XZ decompression support" if UBIFS_FS_ADVANCED_COMPR -+ depends on UBIFS_FS -+ default y -+ help -+ XZ compresses better the ZLIB but it is slower.. -+ Say 'Y' if unsure. -+ ---- a/fs/ubifs/compress.c -+++ b/fs/ubifs/compress.c -@@ -71,6 +71,24 @@ static struct ubifs_compressor zlib_comp - }; - #endif - -+#ifdef CONFIG_UBIFS_FS_XZ -+static DEFINE_MUTEX(xz_enc_mutex); -+static DEFINE_MUTEX(xz_dec_mutex); -+ -+static struct ubifs_compressor xz_compr = { -+ .compr_type = UBIFS_COMPR_XZ, -+ .comp_mutex = &xz_enc_mutex, -+ .decomp_mutex = &xz_dec_mutex, -+ .name = "xz", -+ .capi_name = "xz", -+}; -+#else -+static struct ubifs_compressor xz_compr = { -+ .compr_type = UBIFS_COMPR_XZ, -+ .name = "xz", -+}; -+#endif -+ - /* All UBIFS compressors */ - struct ubifs_compressor *ubifs_compressors[UBIFS_COMPR_TYPES_CNT]; - -@@ -232,9 +250,15 @@ int __init ubifs_compressors_init(void) - if (err) - goto out_lzo; - -+ err = compr_init(&xz_compr); -+ if (err) -+ goto out_zlib; -+ - ubifs_compressors[UBIFS_COMPR_NONE] = &none_compr; - return 0; - -+out_zlib: -+ compr_exit(&zlib_compr); - out_lzo: - compr_exit(&lzo_compr); - return err; -@@ -247,4 +271,5 @@ void ubifs_compressors_exit(void) - { - compr_exit(&lzo_compr); - compr_exit(&zlib_compr); -+ compr_exit(&xz_compr); - } ---- a/fs/ubifs/ubifs-media.h -+++ b/fs/ubifs/ubifs-media.h -@@ -332,12 +332,14 @@ enum { - * UBIFS_COMPR_NONE: no compression - * UBIFS_COMPR_LZO: LZO compression - * UBIFS_COMPR_ZLIB: ZLIB compression -+ * UBIFS_COMPR_XZ: XZ compression - * UBIFS_COMPR_TYPES_CNT: count of supported compression types - */ - enum { - UBIFS_COMPR_NONE, - UBIFS_COMPR_LZO, - UBIFS_COMPR_ZLIB, -+ UBIFS_COMPR_XZ, - UBIFS_COMPR_TYPES_CNT, - }; - diff --git a/target/linux/generic/patches-4.1/540-crypto-xz-decompression-support.patch b/target/linux/generic/patches-4.1/540-crypto-xz-decompression-support.patch deleted file mode 100644 index c250e9f..0000000 --- a/target/linux/generic/patches-4.1/540-crypto-xz-decompression-support.patch +++ /dev/null @@ -1,146 +0,0 @@ ---- a/crypto/Kconfig -+++ b/crypto/Kconfig -@@ -1435,6 +1435,13 @@ config CRYPTO_LZ4HC - help - This is the LZ4 high compression mode algorithm. - -+config CRYPTO_XZ -+ tristate "XZ compression algorithm" -+ select CRYPTO_ALGAPI -+ select XZ_DEC -+ help -+ This is the XZ algorithm. Only decompression is supported for now. -+ - comment "Random Number Generation" - - config CRYPTO_ANSI_CPRNG ---- a/crypto/Makefile -+++ b/crypto/Makefile -@@ -89,6 +89,7 @@ obj-$(CONFIG_CRYPTO_AUTHENC) += authenc. - obj-$(CONFIG_CRYPTO_LZO) += lzo.o - obj-$(CONFIG_CRYPTO_LZ4) += lz4.o - obj-$(CONFIG_CRYPTO_LZ4HC) += lz4hc.o -+obj-$(CONFIG_CRYPTO_XZ) += xz.o - obj-$(CONFIG_CRYPTO_842) += 842.o - obj-$(CONFIG_CRYPTO_RNG2) += rng.o - obj-$(CONFIG_CRYPTO_RNG2) += krng.o ---- /dev/null -+++ b/crypto/xz.c -@@ -0,0 +1,117 @@ -+/* -+ * Cryptographic API. -+ * -+ * XZ decompression support. -+ * -+ * Copyright (c) 2012 Gabor Juhos <juhosg@openwrt.org> -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ */ -+#include <linux/init.h> -+#include <linux/module.h> -+#include <linux/crypto.h> -+#include <linux/xz.h> -+#include <linux/interrupt.h> -+#include <linux/mm.h> -+#include <linux/net.h> -+ -+struct xz_comp_ctx { -+ struct xz_dec *decomp_state; -+ struct xz_buf decomp_buf; -+}; -+ -+static int crypto_xz_decomp_init(struct xz_comp_ctx *ctx) -+{ -+ ctx->decomp_state = xz_dec_init(XZ_SINGLE, 0); -+ if (!ctx->decomp_state) -+ return -ENOMEM; -+ -+ return 0; -+} -+ -+static void crypto_xz_decomp_exit(struct xz_comp_ctx *ctx) -+{ -+ xz_dec_end(ctx->decomp_state); -+} -+ -+static int crypto_xz_init(struct crypto_tfm *tfm) -+{ -+ struct xz_comp_ctx *ctx = crypto_tfm_ctx(tfm); -+ -+ return crypto_xz_decomp_init(ctx); -+} -+ -+static void crypto_xz_exit(struct crypto_tfm *tfm) -+{ -+ struct xz_comp_ctx *ctx = crypto_tfm_ctx(tfm); -+ -+ crypto_xz_decomp_exit(ctx); -+} -+ -+static int crypto_xz_compress(struct crypto_tfm *tfm, const u8 *src, -+ unsigned int slen, u8 *dst, unsigned int *dlen) -+{ -+ return -EOPNOTSUPP; -+} -+ -+static int crypto_xz_decompress(struct crypto_tfm *tfm, const u8 *src, -+ unsigned int slen, u8 *dst, unsigned int *dlen) -+{ -+ struct xz_comp_ctx *dctx = crypto_tfm_ctx(tfm); -+ struct xz_buf *xz_buf = &dctx->decomp_buf; -+ int ret; -+ -+ memset(xz_buf, '\0', sizeof(struct xz_buf)); -+ -+ xz_buf->in = (u8 *) src; -+ xz_buf->in_pos = 0; -+ xz_buf->in_size = slen; -+ xz_buf->out = (u8 *) dst; -+ xz_buf->out_pos = 0; -+ xz_buf->out_size = *dlen; -+ -+ ret = xz_dec_run(dctx->decomp_state, xz_buf); -+ if (ret != XZ_STREAM_END) { -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ *dlen = xz_buf->out_pos; -+ ret = 0; -+ -+out: -+ return ret; -+} -+ -+static struct crypto_alg crypto_xz_alg = { -+ .cra_name = "xz", -+ .cra_flags = CRYPTO_ALG_TYPE_COMPRESS, -+ .cra_ctxsize = sizeof(struct xz_comp_ctx), -+ .cra_module = THIS_MODULE, -+ .cra_list = LIST_HEAD_INIT(crypto_xz_alg.cra_list), -+ .cra_init = crypto_xz_init, -+ .cra_exit = crypto_xz_exit, -+ .cra_u = { .compress = { -+ .coa_compress = crypto_xz_compress, -+ .coa_decompress = crypto_xz_decompress } } -+}; -+ -+static int __init crypto_xz_mod_init(void) -+{ -+ return crypto_register_alg(&crypto_xz_alg); -+} -+ -+static void __exit crypto_xz_mod_exit(void) -+{ -+ crypto_unregister_alg(&crypto_xz_alg); -+} -+ -+module_init(crypto_xz_mod_init); -+module_exit(crypto_xz_mod_exit); -+ -+MODULE_LICENSE("GPL v2"); -+MODULE_DESCRIPTION("Crypto XZ decompression support"); -+MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>"); diff --git a/target/linux/generic/patches-4.1/541-ubifs-xz-decompression-support.patch b/target/linux/generic/patches-4.1/541-ubifs-xz-decompression-support.patch deleted file mode 100644 index f85689c..0000000 --- a/target/linux/generic/patches-4.1/541-ubifs-xz-decompression-support.patch +++ /dev/null @@ -1,92 +0,0 @@ ---- a/fs/ubifs/Kconfig -+++ b/fs/ubifs/Kconfig -@@ -5,8 +5,10 @@ config UBIFS_FS - select CRYPTO if UBIFS_FS_ADVANCED_COMPR - select CRYPTO if UBIFS_FS_LZO - select CRYPTO if UBIFS_FS_ZLIB -+ select CRYPTO if UBIFS_FS_XZ - select CRYPTO_LZO if UBIFS_FS_LZO - select CRYPTO_DEFLATE if UBIFS_FS_ZLIB -+ select CRYPTO_XZ if UBIFS_FS_XZ - depends on MTD_UBI - help - UBIFS is a file system for flash devices which works on top of UBI. -@@ -35,3 +37,12 @@ config UBIFS_FS_ZLIB - default y - help - Zlib compresses better than LZO but it is slower. Say 'Y' if unsure. -+ -+config UBIFS_FS_XZ -+ bool "XZ decompression support" if UBIFS_FS_ADVANCED_COMPR -+ depends on UBIFS_FS -+ default y -+ help -+ XZ compresses better the ZLIB but it is slower.. -+ Say 'Y' if unsure. -+ ---- a/fs/ubifs/compress.c -+++ b/fs/ubifs/compress.c -@@ -71,6 +71,24 @@ static struct ubifs_compressor zlib_comp - }; - #endif - -+#ifdef CONFIG_UBIFS_FS_XZ -+static DEFINE_MUTEX(xz_enc_mutex); -+static DEFINE_MUTEX(xz_dec_mutex); -+ -+static struct ubifs_compressor xz_compr = { -+ .compr_type = UBIFS_COMPR_XZ, -+ .comp_mutex = &xz_enc_mutex, -+ .decomp_mutex = &xz_dec_mutex, -+ .name = "xz", -+ .capi_name = "xz", -+}; -+#else -+static struct ubifs_compressor xz_compr = { -+ .compr_type = UBIFS_COMPR_XZ, -+ .name = "xz", -+}; -+#endif -+ - /* All UBIFS compressors */ - struct ubifs_compressor *ubifs_compressors[UBIFS_COMPR_TYPES_CNT]; - -@@ -232,9 +250,15 @@ int __init ubifs_compressors_init(void) - if (err) - goto out_lzo; - -+ err = compr_init(&xz_compr); -+ if (err) -+ goto out_zlib; -+ - ubifs_compressors[UBIFS_COMPR_NONE] = &none_compr; - return 0; - -+out_zlib: -+ compr_exit(&zlib_compr); - out_lzo: - compr_exit(&lzo_compr); - return err; -@@ -247,4 +271,5 @@ void ubifs_compressors_exit(void) - { - compr_exit(&lzo_compr); - compr_exit(&zlib_compr); -+ compr_exit(&xz_compr); - } ---- a/fs/ubifs/ubifs-media.h -+++ b/fs/ubifs/ubifs-media.h -@@ -332,12 +332,14 @@ enum { - * UBIFS_COMPR_NONE: no compression - * UBIFS_COMPR_LZO: LZO compression - * UBIFS_COMPR_ZLIB: ZLIB compression -+ * UBIFS_COMPR_XZ: XZ compression - * UBIFS_COMPR_TYPES_CNT: count of supported compression types - */ - enum { - UBIFS_COMPR_NONE, - UBIFS_COMPR_LZO, - UBIFS_COMPR_ZLIB, -+ UBIFS_COMPR_XZ, - UBIFS_COMPR_TYPES_CNT, - }; - diff --git a/target/linux/generic/patches-4.4/540-crypto-xz-decompression-support.patch b/target/linux/generic/patches-4.4/540-crypto-xz-decompression-support.patch deleted file mode 100644 index 8a3377d..0000000 --- a/target/linux/generic/patches-4.4/540-crypto-xz-decompression-support.patch +++ /dev/null @@ -1,146 +0,0 @@ ---- a/crypto/Kconfig -+++ b/crypto/Kconfig -@@ -1544,6 +1544,13 @@ config CRYPTO_LZ4HC - help - This is the LZ4 high compression mode algorithm. - -+config CRYPTO_XZ -+ tristate "XZ compression algorithm" -+ select CRYPTO_ALGAPI -+ select XZ_DEC -+ help -+ This is the XZ algorithm. Only decompression is supported for now. -+ - comment "Random Number Generation" - - config CRYPTO_ANSI_CPRNG ---- a/crypto/Makefile -+++ b/crypto/Makefile -@@ -108,6 +108,7 @@ obj-$(CONFIG_CRYPTO_AUTHENC) += authenc. - obj-$(CONFIG_CRYPTO_LZO) += lzo.o - obj-$(CONFIG_CRYPTO_LZ4) += lz4.o - obj-$(CONFIG_CRYPTO_LZ4HC) += lz4hc.o -+obj-$(CONFIG_CRYPTO_XZ) += xz.o - obj-$(CONFIG_CRYPTO_842) += 842.o - obj-$(CONFIG_CRYPTO_RNG2) += rng.o - obj-$(CONFIG_CRYPTO_ANSI_CPRNG) += ansi_cprng.o ---- /dev/null -+++ b/crypto/xz.c -@@ -0,0 +1,117 @@ -+/* -+ * Cryptographic API. -+ * -+ * XZ decompression support. -+ * -+ * Copyright (c) 2012 Gabor Juhos <juhosg@openwrt.org> -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ */ -+#include <linux/init.h> -+#include <linux/module.h> -+#include <linux/crypto.h> -+#include <linux/xz.h> -+#include <linux/interrupt.h> -+#include <linux/mm.h> -+#include <linux/net.h> -+ -+struct xz_comp_ctx { -+ struct xz_dec *decomp_state; -+ struct xz_buf decomp_buf; -+}; -+ -+static int crypto_xz_decomp_init(struct xz_comp_ctx *ctx) -+{ -+ ctx->decomp_state = xz_dec_init(XZ_SINGLE, 0); -+ if (!ctx->decomp_state) -+ return -ENOMEM; -+ -+ return 0; -+} -+ -+static void crypto_xz_decomp_exit(struct xz_comp_ctx *ctx) -+{ -+ xz_dec_end(ctx->decomp_state); -+} -+ -+static int crypto_xz_init(struct crypto_tfm *tfm) -+{ -+ struct xz_comp_ctx *ctx = crypto_tfm_ctx(tfm); -+ -+ return crypto_xz_decomp_init(ctx); -+} -+ -+static void crypto_xz_exit(struct crypto_tfm *tfm) -+{ -+ struct xz_comp_ctx *ctx = crypto_tfm_ctx(tfm); -+ -+ crypto_xz_decomp_exit(ctx); -+} -+ -+static int crypto_xz_compress(struct crypto_tfm *tfm, const u8 *src, -+ unsigned int slen, u8 *dst, unsigned int *dlen) -+{ -+ return -EOPNOTSUPP; -+} -+ -+static int crypto_xz_decompress(struct crypto_tfm *tfm, const u8 *src, -+ unsigned int slen, u8 *dst, unsigned int *dlen) -+{ -+ struct xz_comp_ctx *dctx = crypto_tfm_ctx(tfm); -+ struct xz_buf *xz_buf = &dctx->decomp_buf; -+ int ret; -+ -+ memset(xz_buf, '\0', sizeof(struct xz_buf)); -+ -+ xz_buf->in = (u8 *) src; -+ xz_buf->in_pos = 0; -+ xz_buf->in_size = slen; -+ xz_buf->out = (u8 *) dst; -+ xz_buf->out_pos = 0; -+ xz_buf->out_size = *dlen; -+ -+ ret = xz_dec_run(dctx->decomp_state, xz_buf); -+ if (ret != XZ_STREAM_END) { -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ *dlen = xz_buf->out_pos; -+ ret = 0; -+ -+out: -+ return ret; -+} -+ -+static struct crypto_alg crypto_xz_alg = { -+ .cra_name = "xz", -+ .cra_flags = CRYPTO_ALG_TYPE_COMPRESS, -+ .cra_ctxsize = sizeof(struct xz_comp_ctx), -+ .cra_module = THIS_MODULE, -+ .cra_list = LIST_HEAD_INIT(crypto_xz_alg.cra_list), -+ .cra_init = crypto_xz_init, -+ .cra_exit = crypto_xz_exit, -+ .cra_u = { .compress = { -+ .coa_compress = crypto_xz_compress, -+ .coa_decompress = crypto_xz_decompress } } -+}; -+ -+static int __init crypto_xz_mod_init(void) -+{ -+ return crypto_register_alg(&crypto_xz_alg); -+} -+ -+static void __exit crypto_xz_mod_exit(void) -+{ -+ crypto_unregister_alg(&crypto_xz_alg); -+} -+ -+module_init(crypto_xz_mod_init); -+module_exit(crypto_xz_mod_exit); -+ -+MODULE_LICENSE("GPL v2"); -+MODULE_DESCRIPTION("Crypto XZ decompression support"); -+MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>"); diff --git a/target/linux/generic/patches-4.4/541-ubifs-xz-decompression-support.patch b/target/linux/generic/patches-4.4/541-ubifs-xz-decompression-support.patch deleted file mode 100644 index 277d915..0000000 --- a/target/linux/generic/patches-4.4/541-ubifs-xz-decompression-support.patch +++ /dev/null @@ -1,94 +0,0 @@ ---- a/fs/ubifs/Kconfig -+++ b/fs/ubifs/Kconfig -@@ -5,8 +5,10 @@ config UBIFS_FS - select CRYPTO if UBIFS_FS_ADVANCED_COMPR - select CRYPTO if UBIFS_FS_LZO - select CRYPTO if UBIFS_FS_ZLIB -+ select CRYPTO if UBIFS_FS_XZ - select CRYPTO_LZO if UBIFS_FS_LZO - select CRYPTO_DEFLATE if UBIFS_FS_ZLIB -+ select CRYPTO_XZ if UBIFS_FS_XZ - depends on MTD_UBI - help - UBIFS is a file system for flash devices which works on top of UBI. -@@ -36,6 +38,14 @@ config UBIFS_FS_ZLIB - help - Zlib compresses better than LZO but it is slower. Say 'Y' if unsure. - -+config UBIFS_FS_XZ -+ bool "XZ decompression support" if UBIFS_FS_ADVANCED_COMPR -+ depends on UBIFS_FS -+ default y -+ help -+ XZ compresses better the ZLIB but it is slower.. -+ Say 'Y' if unsure. -+ - config UBIFS_ATIME_SUPPORT - bool "Access time support" if UBIFS_FS - depends on UBIFS_FS ---- a/fs/ubifs/compress.c -+++ b/fs/ubifs/compress.c -@@ -71,6 +71,24 @@ static struct ubifs_compressor zlib_comp - }; - #endif - -+#ifdef CONFIG_UBIFS_FS_XZ -+static DEFINE_MUTEX(xz_enc_mutex); -+static DEFINE_MUTEX(xz_dec_mutex); -+ -+static struct ubifs_compressor xz_compr = { -+ .compr_type = UBIFS_COMPR_XZ, -+ .comp_mutex = &xz_enc_mutex, -+ .decomp_mutex = &xz_dec_mutex, -+ .name = "xz", -+ .capi_name = "xz", -+}; -+#else -+static struct ubifs_compressor xz_compr = { -+ .compr_type = UBIFS_COMPR_XZ, -+ .name = "xz", -+}; -+#endif -+ - /* All UBIFS compressors */ - struct ubifs_compressor *ubifs_compressors[UBIFS_COMPR_TYPES_CNT]; - -@@ -232,9 +250,15 @@ int __init ubifs_compressors_init(void) - if (err) - goto out_lzo; - -+ err = compr_init(&xz_compr); -+ if (err) -+ goto out_zlib; -+ - ubifs_compressors[UBIFS_COMPR_NONE] = &none_compr; - return 0; - -+out_zlib: -+ compr_exit(&zlib_compr); - out_lzo: - compr_exit(&lzo_compr); - return err; -@@ -247,4 +271,5 @@ void ubifs_compressors_exit(void) - { - compr_exit(&lzo_compr); - compr_exit(&zlib_compr); -+ compr_exit(&xz_compr); - } ---- a/fs/ubifs/ubifs-media.h -+++ b/fs/ubifs/ubifs-media.h -@@ -332,12 +332,14 @@ enum { - * UBIFS_COMPR_NONE: no compression - * UBIFS_COMPR_LZO: LZO compression - * UBIFS_COMPR_ZLIB: ZLIB compression -+ * UBIFS_COMPR_XZ: XZ compression - * UBIFS_COMPR_TYPES_CNT: count of supported compression types - */ - enum { - UBIFS_COMPR_NONE, - UBIFS_COMPR_LZO, - UBIFS_COMPR_ZLIB, -+ UBIFS_COMPR_XZ, - UBIFS_COMPR_TYPES_CNT, - }; - diff --git a/target/linux/imx6/config-4.4 b/target/linux/imx6/config-4.4 index 890ed18..ac8987a 100644 --- a/target/linux/imx6/config-4.4 +++ b/target/linux/imx6/config-4.4 @@ -110,7 +110,6 @@ CONFIG_CRYPTO_SHA256_ARM=y # CONFIG_CRYPTO_SHA2_ARM_CE is not set CONFIG_CRYPTO_SHA512_ARM=y CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_XZ=y CONFIG_DCACHE_WORD_ACCESS=y CONFIG_DEBUG_IMX_UART_PORT=1 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" @@ -400,7 +399,6 @@ CONFIG_TREE_RCU=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_XZ=y CONFIG_UBIFS_FS_ZLIB=y CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" # CONFIG_USB_MXS_PHY is not set diff --git a/target/linux/ipq806x/config-4.4 b/target/linux/ipq806x/config-4.4 index cdb20eb..69c2198 100644 --- a/target/linux/ipq806x/config-4.4 +++ b/target/linux/ipq806x/config-4.4 @@ -108,7 +108,6 @@ CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_XZ=y CONFIG_DCACHE_WORD_ACCESS=y CONFIG_DEBUG_GPIO=y CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" @@ -406,7 +405,6 @@ CONFIG_TREE_RCU=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y -# CONFIG_UBIFS_FS_XZ is not set CONFIG_UBIFS_FS_ZLIB=y CONFIG_UEVENT_HELPER_PATH="" CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" diff --git a/target/linux/kirkwood/config-4.4 b/target/linux/kirkwood/config-4.4 index 3c40844..f5d3164 100644 --- a/target/linux/kirkwood/config-4.4 +++ b/target/linux/kirkwood/config-4.4 @@ -298,7 +298,6 @@ CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y -# CONFIG_UBIFS_FS_XZ is not set CONFIG_UBIFS_FS_ZLIB=y CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" CONFIG_USB=y diff --git a/target/linux/lantiq/xrx200/config-default b/target/linux/lantiq/xrx200/config-default index f1351c8..30dff32 100644 --- a/target/linux/lantiq/xrx200/config-default +++ b/target/linux/lantiq/xrx200/config-default @@ -41,7 +41,6 @@ CONFIG_SWCONFIG_LEDS=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y -# CONFIG_UBIFS_FS_XZ is not set CONFIG_UBIFS_FS_ZLIB=y CONFIG_USB=y CONFIG_USB_COMMON=y diff --git a/target/linux/lantiq/xway/config-default b/target/linux/lantiq/xway/config-default index ae13f80..bddf027 100644 --- a/target/linux/lantiq/xway/config-default +++ b/target/linux/lantiq/xway/config-default @@ -60,7 +60,6 @@ CONFIG_SYS_SUPPORTS_MIPS16=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y -# CONFIG_UBIFS_FS_XZ is not set CONFIG_UBIFS_FS_ZLIB=y CONFIG_USB=y CONFIG_USB_COMMON=y diff --git a/target/linux/layerscape/32b/config-default b/target/linux/layerscape/32b/config-default index f08529a..7aa0dd5 100644 --- a/target/linux/layerscape/32b/config-default +++ b/target/linux/layerscape/32b/config-default @@ -63,7 +63,6 @@ CONFIG_CPU_TLB_V7=y CONFIG_CPU_V7=y CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y -CONFIG_CRYPTO_XZ=y CONFIG_DEBUG_IMX_UART_PORT=1 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEBUG_UART_8250 is not set diff --git a/target/linux/mediatek/config-4.4 b/target/linux/mediatek/config-4.4 index 45fd2dc..2d6140a 100644 --- a/target/linux/mediatek/config-4.4 +++ b/target/linux/mediatek/config-4.4 @@ -102,7 +102,6 @@ CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_XZ=y CONFIG_DCACHE_WORD_ACCESS=y CONFIG_DEBUG_BUGVERBOSE=y CONFIG_DEBUG_GPIO=y @@ -388,7 +387,6 @@ CONFIG_TIMER_STATS=y CONFIG_UBIFS_FS=y # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_XZ=y CONFIG_UBIFS_FS_ZLIB=y CONFIG_UEVENT_HELPER_PATH="" CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" diff --git a/target/linux/mvebu/config-4.4 b/target/linux/mvebu/config-4.4 index cd6c60c..d819970 100644 --- a/target/linux/mvebu/config-4.4 +++ b/target/linux/mvebu/config-4.4 @@ -126,7 +126,6 @@ CONFIG_CRYPTO_SHA256_ARM=y # CONFIG_CRYPTO_SHA2_ARM_CE is not set CONFIG_CRYPTO_SHA512_ARM=y CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_XZ=y CONFIG_DCACHE_WORD_ACCESS=y CONFIG_DEBUG_INFO=y CONFIG_DEBUG_LL=y @@ -406,7 +405,6 @@ CONFIG_TREE_RCU=y CONFIG_UBIFS_FS=y # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_XZ=y CONFIG_UBIFS_FS_ZLIB=y CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" CONFIG_USB=y diff --git a/target/linux/omap/config-4.4 b/target/linux/omap/config-4.4 index a08e511..f16fa68 100644 --- a/target/linux/omap/config-4.4 +++ b/target/linux/omap/config-4.4 @@ -141,7 +141,6 @@ CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_XZ=y CONFIG_DCACHE_WORD_ACCESS=y CONFIG_DDR=y CONFIG_DEBUG_GPIO=y @@ -649,7 +648,6 @@ CONFIG_TWL6040_CORE=y CONFIG_UBIFS_FS=y # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_XZ=y CONFIG_UBIFS_FS_ZLIB=y CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" CONFIG_UNINLINE_SPIN_UNLOCK=y diff --git a/target/linux/oxnas/config-4.4 b/target/linux/oxnas/config-4.4 index 3c3ac00..f1d08a4 100644 --- a/target/linux/oxnas/config-4.4 +++ b/target/linux/oxnas/config-4.4 @@ -89,7 +89,6 @@ CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_XZ=y CONFIG_DCACHE_WORD_ACCESS=y CONFIG_DEBUG_ICEDCC=y CONFIG_DEBUG_LL=y @@ -345,7 +344,6 @@ CONFIG_TREE_RCU=y CONFIG_UBIFS_FS=y # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_XZ=y CONFIG_UBIFS_FS_ZLIB=y CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h" CONFIG_USB=y diff --git a/target/linux/ramips/mt7621/config-4.4 b/target/linux/ramips/mt7621/config-4.4 index 47b208b..73c3b39 100644 --- a/target/linux/ramips/mt7621/config-4.4 +++ b/target/linux/ramips/mt7621/config-4.4 @@ -256,7 +256,6 @@ CONFIG_TREE_RCU=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y -# CONFIG_UBIFS_FS_XZ is not set CONFIG_UBIFS_FS_ZLIB=y CONFIG_USB_SUPPORT=y CONFIG_USE_OF=y diff --git a/target/linux/rb532/config-4.4 b/target/linux/rb532/config-4.4 index 3c6806f..765f01b 100644 --- a/target/linux/rb532/config-4.4 +++ b/target/linux/rb532/config-4.4 @@ -39,7 +39,6 @@ CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_XZ=y CONFIG_CSRC_R4K=y CONFIG_DMA_NONCOHERENT=y # CONFIG_ENABLE_WARN_DEPRECATED is not set @@ -178,7 +177,6 @@ CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_UBIFS_FS=y # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_XZ=y CONFIG_UBIFS_FS_ZLIB=y CONFIG_VIA_RHINE=y CONFIG_VIA_RHINE_MMIO=y diff --git a/target/linux/xburst/config-3.18 b/target/linux/xburst/config-3.18 index fbc2891..71411bf 100644 --- a/target/linux/xburst/config-3.18 +++ b/target/linux/xburst/config-3.18 @@ -40,7 +40,6 @@ CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_LZO=y -CONFIG_CRYPTO_XZ=y CONFIG_DMADEVICES=y CONFIG_DMA_ENGINE=y CONFIG_DMA_JZ4740=y @@ -316,7 +315,6 @@ CONFIG_TREE_PREEMPT_RCU=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_XZ=y CONFIG_UBIFS_FS_ZLIB=y CONFIG_UNINLINE_SPIN_UNLOCK=y CONFIG_USB=y |