[PATCH 0/4] zstd: reduce stack usage

From: Maninder Singh
Date: Mon Jun 03 2019 - 05:10:46 EST


This patch set reduces stack usage for zstd code, because target like ARM has
limited 8KB kernel stack, which is getting overflowed due to hight stack usage
of zstd code with call flow like:

....
....
(FSE_compress_usingCTable) from (HUF_compressWeights_wksp+0x140/0x200)
(HUF_compressWeights_wksp) from (HUF_writeCTable_wksp+0xdc/0x1c8)
(HUF_writeCTable_wksp) from (HUF_compress4X_repeat+0x214/0x450)
(HUF_compress4X_repeat) from (ZSTD_compressBlock_internal+0x228/0x135c)
(ZSTD_compressBlock_internal) from (ZSTD_compressContinue_internal+0x1f8/0x3c8)
(ZSTD_compressContinue_internal) from (ZSTD_compressCCtx+0xc0/0x1cc)
(ZSTD_compressCCtx) from (zstd_compress+0x90/0xa8)
(zstd_compress) from (crypto_compress+0x2c/0x34)
(crypto_compress) from (zcomp_compress+0x3c/0x44)
(zcomp_compress) from (zram_bvec_rw+0x2f8/0xa7c)
(zram_bvec_rw) from [<c03e1e58>] (zram_rw_page+0x104/0x170)
(zram_rw_page) from [<c01d3f94>] (bdev_write_page+0x80/0xb4)
(bdev_write_page) from [<c017dc9c>] (__swap_writepage+0x160/0x29c)
(__swap_writepage) from [<c017de14>] (swap_writepage+0x3c/0x58)
(swap_writepage) from [<c014f88c>] (shrink_page_list+0x788/0xae0)
(shrink_page_list) from [<c01502e0>] (shrink_inactive_list+0x210/0x4a8)
(shrink_inactive_list) from [<c0150dd4>] (shrink_zone+0x53c/0x7c0)
(shrink_zone) from [<c0151354>] (try_to_free_pages+0x2fc/0x7cc)
(try_to_free_pages) from [<c0144c60>] (__alloc_pages_nodemask+0x534/0x91c)
(__alloc_pages_nodemask) from [<c01393ac>] (pagecache_get_page+0xe0/0x1d8)
....
....

Maninder Singh, Vaneet Narang (4):
zstd: pass pointer rathen than structure to functions
zstd: use U16 data type for rankPos
zstd: move params structure to global variable to reduce stack
usage
zstd: change structure variable from int to char

crypto/zstd.c | 11 ++++---
include/linux/zstd.h | 16 +++++-----
lib/zstd/compress.c | 85 +++++++++++++++++++++++++------------------------
lib/zstd/decompress.c | 2 +-
lib/zstd/huf_compress.c | 4 +--
5 files changed, 62 insertions(+), 56 deletions(-)

--
2.7.4