linux-uconsole/drivers/crypto/ccp
Arnd Bergmann 572b627848 crypto: ccp - Reduce maximum stack usage
[ Upstream commit 72c8117adf ]

Each of the operations in ccp_run_cmd() needs several hundred
bytes of kernel stack. Depending on the inlining, these may
need separate stack slots that add up to more than the warning
limit, as shown in this clang based build:

drivers/crypto/ccp/ccp-ops.c:871:12: error: stack frame size of 1164 bytes in function 'ccp_run_aes_cmd' [-Werror,-Wframe-larger-than=]
static int ccp_run_aes_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd)

The problem may also happen when there is no warning, e.g. in the
ccp_run_cmd()->ccp_run_aes_cmd()->ccp_run_aes_gcm_cmd() call chain with
over 2000 bytes.

Mark each individual function as 'noinline_for_stack' to prevent
this from happening, and move the calls to the two special cases for aes
into the top-level function. This will keep the actual combined stack
usage to the mimimum: 828 bytes for ccp_run_aes_gcm_cmd() and
at most 524 bytes for each of the other cases.

Fixes: 63b945091a ("crypto: ccp - CCP device driver and interface support")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-01-27 14:51:02 +01:00
..
ccp-crypto-aes-cmac.c crypto: ahash - remove useless setting of cra_type 2018-07-09 00:30:26 +08:00
ccp-crypto-aes-galois.c crypto: ccp - Add support for valid authsize values less than 16 2019-08-16 10:12:38 +02:00
ccp-crypto-aes-xts.c crypto: ccp - Add XTS-AES-256 support for CCP version 5 2017-08-04 09:27:44 +08:00
ccp-crypto-aes.c crypto: ccp - fix AES CFB error exposed by new test vectors 2020-01-27 14:50:50 +01:00
ccp-crypto-des3.c crypto: ccp - Update copyright dates for 2017. 2017-07-28 17:58:01 +08:00
ccp-crypto-main.c crypto: ccp - use -ENOSPC for transient busy indication 2017-11-03 22:11:16 +08:00
ccp-crypto-rsa.c crypto: ccp - return an actual key size from RSA max_size callback 2018-03-03 00:03:41 +08:00
ccp-crypto-sha.c crypto: ahash - remove useless setting of cra_type 2018-07-09 00:30:26 +08:00
ccp-crypto.h crypto: ccp - Add XTS-AES-256 support for CCP version 5 2017-08-04 09:27:44 +08:00
ccp-debugfs.c crypto: ccp - don't disable interrupts while setting up debugfs 2018-03-03 00:03:40 +08:00
ccp-dev-v3.c csrypto: ccp - Expand RSA support for a v5 ccp 2017-07-28 17:58:06 +08:00
ccp-dev-v5.c crypto: ccp - remove unused variable qim 2017-11-03 21:53:30 +08:00
ccp-dev.c crypto: ccp - Ignore unconfigured CCP device on suspend/resume 2019-09-06 10:22:21 +02:00
ccp-dev.h crypto: ccp - Validate the the error value used to index error messages 2019-07-26 09:14:19 +02:00
ccp-dmaengine.c crypto: ccp - fix uninitialized list head 2019-12-13 08:52:47 +01:00
ccp-ops.c crypto: ccp - Reduce maximum stack usage 2020-01-27 14:51:02 +01:00
Kconfig crypto: ccp: Add Platform Security Processor (PSP) device support 2017-12-04 10:57:28 -06:00
Makefile crypto: ccp: Add Platform Security Processor (PSP) device support 2017-12-04 10:57:28 -06:00
psp-dev.c crypto: ccp - Do not free psp_master when PLATFORM_INIT fails 2019-05-22 07:37:36 +02:00
psp-dev.h crypto: ccp - Support register differences between PSP devices 2018-07-13 18:26:48 +08:00
sp-dev.c crypto: ccp - add check to get PSP master only when PSP is detected 2018-03-03 00:03:39 +08:00
sp-dev.h crypto: ccp - Support register differences between PSP devices 2018-07-13 18:26:48 +08:00
sp-pci.c crypto: ccp - Add support for new CCP/PSP device ID 2018-07-13 18:26:48 +08:00
sp-platform.c crypto: ccp - rename ccp driver initialize files as sp device 2017-07-18 18:15:54 +08:00