From: Peng Hao <flyingpeng@xxxxxxxxxxx> clang report: drivers/infiniband/hw/ocrdma/ocrdma_stats.c:686:16: error: stack frame size (20664) exceeds limit (2048) in 'ocrdma_dbgfs_ops_read' [-Werror,-Wframe-larger-than] static ssize_t ocrdma_dbgfs_ops_read(struct file *filp, char __user *buffer, ^ A 128-byte array is defined in ocrdma_add_stat and is called multiple times by multiple functions (up to dozens of times), which results in a large amount of stack space being accumulated in ocrdma_dbgfs_ops_read. mark it as noinline_for_stack to prevent it from spreading to ocrdma_dbgfs_ops_read's stack size. Signed-off-by: Peng Hao <flyingpeng@xxxxxxxxxxx> --- drivers/infiniband/hw/ocrdma/ocrdma_stats.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c index 5f831e3bdbad..0b26c4e6de53 100644 --- a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c +++ b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c @@ -46,7 +46,7 @@ static struct dentry *ocrdma_dbgfs_dir; -static int ocrdma_add_stat(char *start, char *pcur, +static noinline_for_stack int ocrdma_add_stat(char *start, char *pcur, char *name, u64 count) { char buff[128] = {0}; -- 2.27.0