Message ID | 20240711085647.81004-1-flyingpeng@tencent.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [v3] infiniband/hw/ocrdma: make function ocrdma_add_stat as noinline_for_stack | expand |
On Thu, Jul 11, 2024 at 04:56:47PM +0800, flyingpenghao@gmail.com wrote: > From: Peng Hao <flyingpeng@tencent.com> > > 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@tencent.com> > --- > 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@tencent.com 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 > >
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};