On Thu, Jul 11, 2024 at 04:56:47PM +0800, flyingpenghao@xxxxxxxxx wrote: > 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(-) I merged this patch with https://lore.kernel.org/r/20240710091657.26291-1-flyingpeng@xxxxxxxxxxx Thanks > > 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 > >