Skip to content

Commit b851268

Browse files
flying-122rleon
authored andcommitted
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: Peng Hao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Leon Romanovsky <[email protected]>
1 parent af48f95 commit b851268

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

drivers/infiniband/hw/ocrdma/ocrdma_stats.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646

4747
static struct dentry *ocrdma_dbgfs_dir;
4848

49-
static int ocrdma_add_stat(char *start, char *pcur,
49+
static noinline_for_stack int ocrdma_add_stat(char *start, char *pcur,
5050
char *name, u64 count)
5151
{
5252
char buff[128] = {0};
@@ -99,7 +99,7 @@ void ocrdma_release_stats_resources(struct ocrdma_dev *dev)
9999
kfree(mem->debugfs_mem);
100100
}
101101

102-
static char *ocrdma_resource_stats(struct ocrdma_dev *dev)
102+
static noinline_for_stack char *ocrdma_resource_stats(struct ocrdma_dev *dev)
103103
{
104104
char *stats = dev->stats_mem.debugfs_mem, *pcur;
105105
struct ocrdma_rdma_stats_resp *rdma_stats =
@@ -216,7 +216,7 @@ static char *ocrdma_resource_stats(struct ocrdma_dev *dev)
216216
return stats;
217217
}
218218

219-
static char *ocrdma_rx_stats(struct ocrdma_dev *dev)
219+
static noinline_for_stack char *ocrdma_rx_stats(struct ocrdma_dev *dev)
220220
{
221221
char *stats = dev->stats_mem.debugfs_mem, *pcur;
222222
struct ocrdma_rdma_stats_resp *rdma_stats =
@@ -284,7 +284,7 @@ static u64 ocrdma_sysfs_rcv_data(struct ocrdma_dev *dev)
284284
rx_stats->roce_frame_bytes_hi))/4;
285285
}
286286

287-
static char *ocrdma_tx_stats(struct ocrdma_dev *dev)
287+
static noinline_for_stack char *ocrdma_tx_stats(struct ocrdma_dev *dev)
288288
{
289289
char *stats = dev->stats_mem.debugfs_mem, *pcur;
290290
struct ocrdma_rdma_stats_resp *rdma_stats =
@@ -358,7 +358,7 @@ static u64 ocrdma_sysfs_xmit_data(struct ocrdma_dev *dev)
358358
tx_stats->read_rsp_bytes_hi))/4;
359359
}
360360

361-
static char *ocrdma_wqe_stats(struct ocrdma_dev *dev)
361+
static noinline_for_stack char *ocrdma_wqe_stats(struct ocrdma_dev *dev)
362362
{
363363
char *stats = dev->stats_mem.debugfs_mem, *pcur;
364364
struct ocrdma_rdma_stats_resp *rdma_stats =
@@ -391,7 +391,7 @@ static char *ocrdma_wqe_stats(struct ocrdma_dev *dev)
391391
return stats;
392392
}
393393

394-
static char *ocrdma_db_errstats(struct ocrdma_dev *dev)
394+
static noinline_for_stack char *ocrdma_db_errstats(struct ocrdma_dev *dev)
395395
{
396396
char *stats = dev->stats_mem.debugfs_mem, *pcur;
397397
struct ocrdma_rdma_stats_resp *rdma_stats =
@@ -412,7 +412,7 @@ static char *ocrdma_db_errstats(struct ocrdma_dev *dev)
412412
return stats;
413413
}
414414

415-
static char *ocrdma_rxqp_errstats(struct ocrdma_dev *dev)
415+
static noinline_for_stack char *ocrdma_rxqp_errstats(struct ocrdma_dev *dev)
416416
{
417417
char *stats = dev->stats_mem.debugfs_mem, *pcur;
418418
struct ocrdma_rdma_stats_resp *rdma_stats =
@@ -438,7 +438,7 @@ static char *ocrdma_rxqp_errstats(struct ocrdma_dev *dev)
438438
return stats;
439439
}
440440

441-
static char *ocrdma_txqp_errstats(struct ocrdma_dev *dev)
441+
static noinline_for_stack char *ocrdma_txqp_errstats(struct ocrdma_dev *dev)
442442
{
443443
char *stats = dev->stats_mem.debugfs_mem, *pcur;
444444
struct ocrdma_rdma_stats_resp *rdma_stats =
@@ -462,7 +462,7 @@ static char *ocrdma_txqp_errstats(struct ocrdma_dev *dev)
462462
return stats;
463463
}
464464

465-
static char *ocrdma_tx_dbg_stats(struct ocrdma_dev *dev)
465+
static noinline_for_stack char *ocrdma_tx_dbg_stats(struct ocrdma_dev *dev)
466466
{
467467
int i;
468468
char *pstats = dev->stats_mem.debugfs_mem;
@@ -480,7 +480,7 @@ static char *ocrdma_tx_dbg_stats(struct ocrdma_dev *dev)
480480
return dev->stats_mem.debugfs_mem;
481481
}
482482

483-
static char *ocrdma_rx_dbg_stats(struct ocrdma_dev *dev)
483+
static noinline_for_stack char *ocrdma_rx_dbg_stats(struct ocrdma_dev *dev)
484484
{
485485
int i;
486486
char *pstats = dev->stats_mem.debugfs_mem;
@@ -498,7 +498,7 @@ static char *ocrdma_rx_dbg_stats(struct ocrdma_dev *dev)
498498
return dev->stats_mem.debugfs_mem;
499499
}
500500

501-
static char *ocrdma_driver_dbg_stats(struct ocrdma_dev *dev)
501+
static noinline_for_stack char *ocrdma_driver_dbg_stats(struct ocrdma_dev *dev)
502502
{
503503
char *stats = dev->stats_mem.debugfs_mem, *pcur;
504504

0 commit comments

Comments
 (0)