Re: [PATCH] [v2] net: hns3: reduce stack usage in hclge_dbg_dump_tm_pri()

From: Jijie Shao
Date: Mon Dec 04 2023 - 09:51:02 EST



on 2023/12/4 16:57, Arnd Bergmann wrote:
s already allocated by debugfs,
but that is a much larger change.

Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
---
v2: fix error handling leak
---
.../hisilicon/hns3/hns3pf/hclge_debugfs.c | 21 ++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
index ff3f8f424ad9..8f94e13c1edf 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
@@ -981,7 +981,7 @@ static const struct hclge_dbg_item tm_pri_items[] = {
static int hclge_dbg_dump_tm_pri(struct hclge_dev *hdev, char *buf, int len)
{
- char data_str[ARRAY_SIZE(tm_pri_items)][HCLGE_DBG_DATA_STR_LEN];
+ char *data_str;

We want to define variables in an inverted triangle based on the code length.
so, "char *data_str" should move four lines down.

struct hclge_tm_shaper_para c_shaper_para, p_shaper_para;
char *result[ARRAY_SIZE(tm_pri_items)], *sch_mode_str;
char content[HCLGE_DBG_TM_INFO_LEN];
u8 pri_num, sch_mode, weight, i, j;
char *data_str;
int pos, ret;

struct hclge_tm_shaper_para c_shaper_para, p_shaper_para;
char *result[ARRAY_SIZE(tm_pri_items)], *sch_mode_str;
char content[HCLGE_DBG_TM_INFO_LEN];
@@ -992,8 +992,13 @@ static int hclge_dbg_dump_tm_pri(struct hclge_dev *hdev, char *buf, int len)
if (ret)
return ret;