Commit b8512680 authored by Peng Hao's avatar Peng Hao Committed by Leon Romanovsky

RDMA/ocrdma: Don't inline statistics functions

Fix the problem of KASAN causing the stack frame size to increase

drivers/infiniband/hw/ocrdma/ocrdma_stats.c:686:16: error: stack frame size (20664) exceeds limit (8192) in 'ocrdma_dbgfs_ops_read' [-Werror,-Wframe-larger-than]
static ssize_t ocrdma_dbgfs_ops_read(struct file *filp, char __user *buffer,
               ^

Some functions called by ocrdma_dbgfs_ops_read occupy a lot of stack space.
Mark these functions as noinline_for_stack to prevent them from accumulating
in ocrdma_dbgfs_ops_read.
Signed-off-by: default avatarPeng Hao <flyingpeng@tencent.com>
Link: https://lore.kernel.org/r/20240710091657.26291-1-flyingpeng@tencent.comSigned-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent af48f954
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
static struct dentry *ocrdma_dbgfs_dir; 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 *name, u64 count)
{ {
char buff[128] = {0}; char buff[128] = {0};
...@@ -99,7 +99,7 @@ void ocrdma_release_stats_resources(struct ocrdma_dev *dev) ...@@ -99,7 +99,7 @@ void ocrdma_release_stats_resources(struct ocrdma_dev *dev)
kfree(mem->debugfs_mem); kfree(mem->debugfs_mem);
} }
static char *ocrdma_resource_stats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_resource_stats(struct ocrdma_dev *dev)
{ {
char *stats = dev->stats_mem.debugfs_mem, *pcur; char *stats = dev->stats_mem.debugfs_mem, *pcur;
struct ocrdma_rdma_stats_resp *rdma_stats = struct ocrdma_rdma_stats_resp *rdma_stats =
...@@ -216,7 +216,7 @@ static char *ocrdma_resource_stats(struct ocrdma_dev *dev) ...@@ -216,7 +216,7 @@ static char *ocrdma_resource_stats(struct ocrdma_dev *dev)
return stats; return stats;
} }
static char *ocrdma_rx_stats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_rx_stats(struct ocrdma_dev *dev)
{ {
char *stats = dev->stats_mem.debugfs_mem, *pcur; char *stats = dev->stats_mem.debugfs_mem, *pcur;
struct ocrdma_rdma_stats_resp *rdma_stats = struct ocrdma_rdma_stats_resp *rdma_stats =
...@@ -284,7 +284,7 @@ static u64 ocrdma_sysfs_rcv_data(struct ocrdma_dev *dev) ...@@ -284,7 +284,7 @@ static u64 ocrdma_sysfs_rcv_data(struct ocrdma_dev *dev)
rx_stats->roce_frame_bytes_hi))/4; rx_stats->roce_frame_bytes_hi))/4;
} }
static char *ocrdma_tx_stats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_tx_stats(struct ocrdma_dev *dev)
{ {
char *stats = dev->stats_mem.debugfs_mem, *pcur; char *stats = dev->stats_mem.debugfs_mem, *pcur;
struct ocrdma_rdma_stats_resp *rdma_stats = struct ocrdma_rdma_stats_resp *rdma_stats =
...@@ -358,7 +358,7 @@ static u64 ocrdma_sysfs_xmit_data(struct ocrdma_dev *dev) ...@@ -358,7 +358,7 @@ static u64 ocrdma_sysfs_xmit_data(struct ocrdma_dev *dev)
tx_stats->read_rsp_bytes_hi))/4; tx_stats->read_rsp_bytes_hi))/4;
} }
static char *ocrdma_wqe_stats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_wqe_stats(struct ocrdma_dev *dev)
{ {
char *stats = dev->stats_mem.debugfs_mem, *pcur; char *stats = dev->stats_mem.debugfs_mem, *pcur;
struct ocrdma_rdma_stats_resp *rdma_stats = struct ocrdma_rdma_stats_resp *rdma_stats =
...@@ -391,7 +391,7 @@ static char *ocrdma_wqe_stats(struct ocrdma_dev *dev) ...@@ -391,7 +391,7 @@ static char *ocrdma_wqe_stats(struct ocrdma_dev *dev)
return stats; return stats;
} }
static char *ocrdma_db_errstats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_db_errstats(struct ocrdma_dev *dev)
{ {
char *stats = dev->stats_mem.debugfs_mem, *pcur; char *stats = dev->stats_mem.debugfs_mem, *pcur;
struct ocrdma_rdma_stats_resp *rdma_stats = struct ocrdma_rdma_stats_resp *rdma_stats =
...@@ -412,7 +412,7 @@ static char *ocrdma_db_errstats(struct ocrdma_dev *dev) ...@@ -412,7 +412,7 @@ static char *ocrdma_db_errstats(struct ocrdma_dev *dev)
return stats; return stats;
} }
static char *ocrdma_rxqp_errstats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_rxqp_errstats(struct ocrdma_dev *dev)
{ {
char *stats = dev->stats_mem.debugfs_mem, *pcur; char *stats = dev->stats_mem.debugfs_mem, *pcur;
struct ocrdma_rdma_stats_resp *rdma_stats = struct ocrdma_rdma_stats_resp *rdma_stats =
...@@ -438,7 +438,7 @@ static char *ocrdma_rxqp_errstats(struct ocrdma_dev *dev) ...@@ -438,7 +438,7 @@ static char *ocrdma_rxqp_errstats(struct ocrdma_dev *dev)
return stats; return stats;
} }
static char *ocrdma_txqp_errstats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_txqp_errstats(struct ocrdma_dev *dev)
{ {
char *stats = dev->stats_mem.debugfs_mem, *pcur; char *stats = dev->stats_mem.debugfs_mem, *pcur;
struct ocrdma_rdma_stats_resp *rdma_stats = struct ocrdma_rdma_stats_resp *rdma_stats =
...@@ -462,7 +462,7 @@ static char *ocrdma_txqp_errstats(struct ocrdma_dev *dev) ...@@ -462,7 +462,7 @@ static char *ocrdma_txqp_errstats(struct ocrdma_dev *dev)
return stats; return stats;
} }
static char *ocrdma_tx_dbg_stats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_tx_dbg_stats(struct ocrdma_dev *dev)
{ {
int i; int i;
char *pstats = dev->stats_mem.debugfs_mem; char *pstats = dev->stats_mem.debugfs_mem;
...@@ -480,7 +480,7 @@ static char *ocrdma_tx_dbg_stats(struct ocrdma_dev *dev) ...@@ -480,7 +480,7 @@ static char *ocrdma_tx_dbg_stats(struct ocrdma_dev *dev)
return dev->stats_mem.debugfs_mem; return dev->stats_mem.debugfs_mem;
} }
static char *ocrdma_rx_dbg_stats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_rx_dbg_stats(struct ocrdma_dev *dev)
{ {
int i; int i;
char *pstats = dev->stats_mem.debugfs_mem; char *pstats = dev->stats_mem.debugfs_mem;
...@@ -498,7 +498,7 @@ static char *ocrdma_rx_dbg_stats(struct ocrdma_dev *dev) ...@@ -498,7 +498,7 @@ static char *ocrdma_rx_dbg_stats(struct ocrdma_dev *dev)
return dev->stats_mem.debugfs_mem; return dev->stats_mem.debugfs_mem;
} }
static char *ocrdma_driver_dbg_stats(struct ocrdma_dev *dev) static noinline_for_stack char *ocrdma_driver_dbg_stats(struct ocrdma_dev *dev)
{ {
char *stats = dev->stats_mem.debugfs_mem, *pcur; char *stats = dev->stats_mem.debugfs_mem, *pcur;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment