Synchronize patches, add DFX for UB and NIC, and MAC, and solve some bugs Signed-off-by: veega2022 <zhuweijia@huawei.com>
487 lines
18 KiB
Diff
487 lines
18 KiB
Diff
From a5efd8daf63f13196ea38e2a2cd9e41c3d4be82b Mon Sep 17 00:00:00 2001
|
|
From: veega <zhuweijia@huawei.com>
|
|
Date: Wed, 6 Sep 2023 12:01:21 +0800
|
|
Subject: [PATCH] hikptool: fix the memory leak risk problem
|
|
|
|
After the framework fails to apply for memory, the memory needs to be released. The framework returns a processing failure message. The module needs to exit and release the memory.
|
|
|
|
Signed-off-by: veega <zhuweijia@huawei.com>
|
|
---
|
|
net/nic/nic_dfx/hikp_nic_dfx.c | 17 +++++++++--------
|
|
net/nic/nic_fd/hikp_nic_fd.c | 6 ++++--
|
|
net/nic/nic_info/hikp_nic_info.c | 4 +++-
|
|
net/nic/nic_log/hikp_nic_log.c | 8 ++++----
|
|
net/nic/nic_ppp/hikp_nic_ppp.c | 5 +++--
|
|
net/nic/nic_qos/hikp_nic_qos.c | 5 +++--
|
|
net/nic/nic_queue/hikp_nic_queue.c | 5 +++--
|
|
net/nic/nic_rss/hikp_nic_rss.c | 5 +++--
|
|
net/roce/roce_pkt/hikp_roce_pkt.c | 11 +++++++----
|
|
net/roce/roce_scc/hikp_roce_scc.c | 11 +++++++----
|
|
net/roce/roce_trp/hikp_roce_trp.c | 11 +++++++----
|
|
net/roce/roce_tsp/hikp_roce_tsp.c | 11 +++++++----
|
|
sas/sas_func/sas_analy_queue.c | 3 ++-
|
|
sas/sas_func/sas_dump_reg.c | 3 ++-
|
|
sas/sas_func/sas_read_dev.c | 3 ++-
|
|
sas/sas_func/sas_read_dqe.c | 3 ++-
|
|
sas/sas_func/sas_read_errcode.c | 3 ++-
|
|
sata/sata_func/sata_dump_reg.c | 3 ++-
|
|
serdes/hikp_serdes.c | 8 ++++----
|
|
socip/hikp_socip_dumpreg.c | 4 +++-
|
|
20 files changed, 79 insertions(+), 50 deletions(-)
|
|
|
|
diff --git a/net/nic/nic_dfx/hikp_nic_dfx.c b/net/nic/nic_dfx/hikp_nic_dfx.c
|
|
index 3584493..c734ce0 100644
|
|
--- a/net/nic/nic_dfx/hikp_nic_dfx.c
|
|
+++ b/net/nic/nic_dfx/hikp_nic_dfx.c
|
|
@@ -123,12 +123,12 @@ static int hikp_nic_get_first_blk_dfx(struct nic_dfx_rsp_head_t *rsp_head, uint3
|
|
uint32_t *max_dfx_size, uint32_t *version)
|
|
{
|
|
struct nic_dfx_rsp_t *dfx_rsp = NULL;
|
|
- struct hikp_cmd_ret *cmd_ret;
|
|
+ struct hikp_cmd_ret *cmd_ret = NULL;
|
|
int ret;
|
|
|
|
ret = hikp_nic_dfx_get_blk(&cmd_ret, 0, g_dfx_param.sub_cmd_code);
|
|
if (ret < 0)
|
|
- return ret;
|
|
+ goto err_out;
|
|
|
|
dfx_rsp = (struct nic_dfx_rsp_t *)(cmd_ret->rsp_data);
|
|
*version = cmd_ret->version;
|
|
@@ -168,12 +168,12 @@ static int hikp_nic_get_blk_dfx(struct nic_dfx_rsp_head_t *rsp_head, uint32_t bl
|
|
uint32_t *reg_data, uint32_t *max_dfx_size)
|
|
{
|
|
struct nic_dfx_rsp_t *dfx_rsp = NULL;
|
|
- struct hikp_cmd_ret *cmd_ret;
|
|
+ struct hikp_cmd_ret *cmd_ret = NULL;
|
|
int ret;
|
|
|
|
ret = hikp_nic_dfx_get_blk(&cmd_ret, blk_id, g_dfx_param.sub_cmd_code);
|
|
if (ret < 0)
|
|
- return ret;
|
|
+ goto err_out;
|
|
|
|
dfx_rsp = (struct nic_dfx_rsp_t *)(cmd_ret->rsp_data);
|
|
*rsp_head = dfx_rsp->rsp_head;
|
|
@@ -181,16 +181,17 @@ static int hikp_nic_get_blk_dfx(struct nic_dfx_rsp_head_t *rsp_head, uint32_t bl
|
|
HIKP_ERROR_PRINT("blk%u reg_data copy size error, "
|
|
"data size: 0x%x, max size: 0x%x\n",
|
|
blk_id, rsp_head->cur_blk_size, *max_dfx_size);
|
|
- free(cmd_ret);
|
|
- cmd_ret = NULL;
|
|
- return -EINVAL;
|
|
+ ret = -EINVAL;
|
|
+ goto err_out;
|
|
}
|
|
memcpy(reg_data, dfx_rsp->reg_data, rsp_head->cur_blk_size);
|
|
*max_dfx_size -= (uint32_t)rsp_head->cur_blk_size;
|
|
+
|
|
+err_out:
|
|
free(cmd_ret);
|
|
cmd_ret = NULL;
|
|
|
|
- return 0;
|
|
+ return ret;
|
|
}
|
|
|
|
static int cmd_dfx_module_select(struct major_cmd_ctrl *self, const char *argv)
|
|
diff --git a/net/nic/nic_fd/hikp_nic_fd.c b/net/nic/nic_fd/hikp_nic_fd.c
|
|
index 5a87c30..57bc94b 100644
|
|
--- a/net/nic/nic_fd/hikp_nic_fd.c
|
|
+++ b/net/nic/nic_fd/hikp_nic_fd.c
|
|
@@ -558,8 +558,10 @@ static int hikp_nic_fd_get_blk(struct hikp_cmd_header *req_header,
|
|
int ret = 0;
|
|
|
|
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
|
|
- if (cmd_ret == NULL)
|
|
- return -EIO;
|
|
+ if (hikp_rsp_normal_check(cmd_ret)) {
|
|
+ ret = -EIO;
|
|
+ goto out;
|
|
+ }
|
|
|
|
rsp = (struct nic_fd_rsp *)cmd_ret->rsp_data;
|
|
if (rsp->rsp_head.cur_blk_size > buf_len) {
|
|
diff --git a/net/nic/nic_info/hikp_nic_info.c b/net/nic/nic_info/hikp_nic_info.c
|
|
index 1853d95..d84ca18 100644
|
|
--- a/net/nic/nic_info/hikp_nic_info.c
|
|
+++ b/net/nic/nic_info/hikp_nic_info.c
|
|
@@ -64,12 +64,14 @@ static int hikp_nic_get_hw_info(struct hikp_cmd_ret **cmd_ret)
|
|
static int hikp_nic_get_curr_die_info(void)
|
|
{
|
|
struct nic_info_rsp_t *info_rsp = NULL;
|
|
- struct hikp_cmd_ret *cmd_ret;
|
|
+ struct hikp_cmd_ret *cmd_ret = NULL;
|
|
int ret;
|
|
|
|
ret = hikp_nic_get_hw_info(&cmd_ret);
|
|
if (ret != 0) {
|
|
HIKP_ERROR_PRINT("Get chip info fail.\n");
|
|
+ free(cmd_ret);
|
|
+ cmd_ret = NULL;
|
|
return ret;
|
|
}
|
|
info_rsp = (struct nic_info_rsp_t *)(cmd_ret->rsp_data);
|
|
diff --git a/net/nic/nic_log/hikp_nic_log.c b/net/nic/nic_log/hikp_nic_log.c
|
|
index 527f9e9..5cafe4e 100644
|
|
--- a/net/nic/nic_log/hikp_nic_log.c
|
|
+++ b/net/nic/nic_log/hikp_nic_log.c
|
|
@@ -96,13 +96,13 @@ static int hikp_nic_get_first_blk_info(uint32_t *total_blk_num,
|
|
uint32_t *cur_blk_size, uint8_t **log_data)
|
|
{
|
|
struct nic_log_rsp_data *log_rsp = NULL;
|
|
- struct hikp_cmd_ret *cmd_ret;
|
|
+ struct hikp_cmd_ret *cmd_ret = NULL;
|
|
uint32_t log_size;
|
|
int ret;
|
|
|
|
ret = hikp_nic_get_blk_log(&cmd_ret, 0);
|
|
if (ret < 0)
|
|
- return ret;
|
|
+ goto err_out;
|
|
|
|
log_rsp = (struct nic_log_rsp_data *)(cmd_ret->rsp_data);
|
|
log_size = (uint32_t)(log_rsp->total_blk_num * MAX_LOG_DATA_NUM * sizeof(uint32_t));
|
|
@@ -132,12 +132,12 @@ static int hikp_nic_get_log_info(uint32_t blk_id, uint32_t *cur_blk_size, uint8_
|
|
uint32_t max_log_size, uint32_t *blk_num)
|
|
{
|
|
struct nic_log_rsp_data *log_rsp = NULL;
|
|
- struct hikp_cmd_ret *cmd_ret;
|
|
+ struct hikp_cmd_ret *cmd_ret = NULL;
|
|
int ret;
|
|
|
|
ret = hikp_nic_get_blk_log(&cmd_ret, blk_id);
|
|
if (ret)
|
|
- return ret;
|
|
+ goto err_out;
|
|
|
|
log_rsp = (struct nic_log_rsp_data *)(cmd_ret->rsp_data);
|
|
*cur_blk_size = (uint32_t)log_rsp->cur_blk_size;
|
|
diff --git a/net/nic/nic_ppp/hikp_nic_ppp.c b/net/nic/nic_ppp/hikp_nic_ppp.c
|
|
index 28c867d..b71fc48 100644
|
|
--- a/net/nic/nic_ppp/hikp_nic_ppp.c
|
|
+++ b/net/nic/nic_ppp/hikp_nic_ppp.c
|
|
@@ -482,8 +482,9 @@ static int hikp_nic_ppp_get_blk(struct hikp_cmd_header *req_header,
|
|
int ret = 0;
|
|
|
|
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
|
|
- if (cmd_ret == NULL)
|
|
- return -EIO;
|
|
+ ret = hikp_rsp_normal_check(cmd_ret);
|
|
+ if (ret)
|
|
+ goto out;
|
|
|
|
rsp = (struct nic_ppp_rsp *)cmd_ret->rsp_data;
|
|
if (rsp->rsp_head.cur_blk_size > buf_len) {
|
|
diff --git a/net/nic/nic_qos/hikp_nic_qos.c b/net/nic/nic_qos/hikp_nic_qos.c
|
|
index 2d55e45..6c2db1d 100644
|
|
--- a/net/nic/nic_qos/hikp_nic_qos.c
|
|
+++ b/net/nic/nic_qos/hikp_nic_qos.c
|
|
@@ -143,9 +143,10 @@ static int hikp_nic_qos_get_blk(struct hikp_cmd_header *req_header,
|
|
int ret = 0;
|
|
|
|
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
|
|
- if (cmd_ret == NULL) {
|
|
+ ret = hikp_rsp_normal_check(cmd_ret);
|
|
+ if (ret) {
|
|
HIKP_ERROR_PRINT("failed to get block-%u context.\n", req_data->block_id);
|
|
- return -EIO;
|
|
+ goto out;
|
|
}
|
|
|
|
rsp = (struct nic_qos_rsp *)cmd_ret->rsp_data;
|
|
diff --git a/net/nic/nic_queue/hikp_nic_queue.c b/net/nic/nic_queue/hikp_nic_queue.c
|
|
index 37460c0..f229e09 100644
|
|
--- a/net/nic/nic_queue/hikp_nic_queue.c
|
|
+++ b/net/nic/nic_queue/hikp_nic_queue.c
|
|
@@ -239,9 +239,10 @@ static int hikp_nic_queue_get_blk(struct hikp_cmd_header *req_header,
|
|
int ret = 0;
|
|
|
|
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
|
|
- if (cmd_ret == NULL) {
|
|
+ ret = hikp_rsp_normal_check(cmd_ret);
|
|
+ if (ret) {
|
|
HIKP_ERROR_PRINT("failed to get block-%u context.\n", req_data->block_id);
|
|
- return -EIO;
|
|
+ goto out;
|
|
}
|
|
|
|
rsp = (struct nic_queue_rsp *)cmd_ret->rsp_data;
|
|
diff --git a/net/nic/nic_rss/hikp_nic_rss.c b/net/nic/nic_rss/hikp_nic_rss.c
|
|
index b785ba4..5e4d261 100644
|
|
--- a/net/nic/nic_rss/hikp_nic_rss.c
|
|
+++ b/net/nic/nic_rss/hikp_nic_rss.c
|
|
@@ -357,9 +357,10 @@ static int hikp_nic_rss_get_blk(struct hikp_cmd_header *req_header,
|
|
int ret = 0;
|
|
|
|
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
|
|
- if (cmd_ret == NULL) {
|
|
+ ret = hikp_rsp_normal_check(cmd_ret);
|
|
+ if (ret) {
|
|
HIKP_ERROR_PRINT("failed to get block-%u context.\n", req_data->block_id);
|
|
- return -EIO;
|
|
+ goto out;
|
|
}
|
|
|
|
rsp = (struct nic_rss_rsp *)cmd_ret->rsp_data;
|
|
diff --git a/net/roce/roce_pkt/hikp_roce_pkt.c b/net/roce/roce_pkt/hikp_roce_pkt.c
|
|
index abfc526..d3bf885 100644
|
|
--- a/net/roce/roce_pkt/hikp_roce_pkt.c
|
|
+++ b/net/roce/roce_pkt/hikp_roce_pkt.c
|
|
@@ -48,15 +48,18 @@ static int hikp_roce_pkt_clear_set(struct major_cmd_ctrl *self, const char *argv
|
|
static int hikp_roce_pkt_get_data(struct hikp_cmd_ret **cmd_ret, struct roce_pkt_req_param req_data)
|
|
{
|
|
struct hikp_cmd_header req_header = { 0 };
|
|
+ int ret;
|
|
|
|
hikp_cmd_init(&req_header, ROCE_MOD, GET_ROCEE_PKT_CMD, 0);
|
|
*cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (*cmd_ret == NULL) {
|
|
- printf("hikptool roce_pkt cmd_ret malloc failed\n");
|
|
- return -EIO;
|
|
+ ret = hikp_rsp_normal_check(*cmd_ret);
|
|
+ if (ret) {
|
|
+ printf("hikptool roce_pkt get cmd data failed, ret: %d\n", ret);
|
|
+ free(*cmd_ret);
|
|
+ *cmd_ret = NULL;
|
|
}
|
|
|
|
- return 0;
|
|
+ return ret;
|
|
}
|
|
|
|
static void hikp_roce_pkt_print(uint32_t total_block_num,
|
|
diff --git a/net/roce/roce_scc/hikp_roce_scc.c b/net/roce/roce_scc/hikp_roce_scc.c
|
|
index 1011814..e8e166d 100644
|
|
--- a/net/roce/roce_scc/hikp_roce_scc.c
|
|
+++ b/net/roce/roce_scc/hikp_roce_scc.c
|
|
@@ -88,6 +88,7 @@ static int hikp_roce_scc_get_data(struct hikp_cmd_ret **cmd_ret, const uint32_t
|
|
{
|
|
struct roce_scc_req_param req_data = { 0 };
|
|
struct hikp_cmd_header req_header = { 0 };
|
|
+ int ret;
|
|
|
|
req_data.block_id = *block_id;
|
|
req_data.bdf = g_roce_scc_param_t.target.bdf;
|
|
@@ -99,12 +100,14 @@ static int hikp_roce_scc_get_data(struct hikp_cmd_ret **cmd_ret, const uint32_t
|
|
|
|
hikp_cmd_init(&req_header, ROCE_MOD, GET_ROCEE_SCC_CMD, g_roce_scc_param_t.sub_cmd);
|
|
*cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (*cmd_ret == NULL) {
|
|
- printf("hikptool roce_scc cmd_ret malloc failed\n");
|
|
- return -EIO;
|
|
+ ret = hikp_rsp_normal_check(*cmd_ret);
|
|
+ if (ret) {
|
|
+ printf("hikptool roce_scc get cmd data failed, ret: %d\n", ret);
|
|
+ free(*cmd_ret);
|
|
+ *cmd_ret = NULL;
|
|
}
|
|
|
|
- return 0;
|
|
+ return ret;
|
|
}
|
|
|
|
static void hikp_roce_scc_reg_data_free(uint32_t **offset, uint32_t **data)
|
|
diff --git a/net/roce/roce_trp/hikp_roce_trp.c b/net/roce/roce_trp/hikp_roce_trp.c
|
|
index bf22484..4591a47 100644
|
|
--- a/net/roce/roce_trp/hikp_roce_trp.c
|
|
+++ b/net/roce/roce_trp/hikp_roce_trp.c
|
|
@@ -112,6 +112,7 @@ static int hikp_roce_trp_get_data(struct hikp_cmd_ret **cmd_ret, const uint32_t
|
|
{
|
|
struct roce_trp_req_param req_data = { 0 };
|
|
struct hikp_cmd_header req_header = { 0 };
|
|
+ int ret;
|
|
|
|
req_data.block_id = *block_id;
|
|
req_data.bdf = g_roce_trp_param_t.target.bdf;
|
|
@@ -122,12 +123,14 @@ static int hikp_roce_trp_get_data(struct hikp_cmd_ret **cmd_ret, const uint32_t
|
|
}
|
|
hikp_cmd_init(&req_header, ROCE_MOD, GET_ROCEE_TRP_CMD, g_roce_trp_param_t.sub_cmd);
|
|
*cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (*cmd_ret == NULL) {
|
|
- printf("hikptool roce_trp cmd_ret malloc failed\n");
|
|
- return -EIO;
|
|
+ ret = hikp_rsp_normal_check(*cmd_ret);
|
|
+ if (ret) {
|
|
+ printf("hikptool roce_trp get cmd data failed, ret: %d\n", ret);
|
|
+ free(*cmd_ret);
|
|
+ *cmd_ret = NULL;
|
|
}
|
|
|
|
- return 0;
|
|
+ return ret;
|
|
}
|
|
|
|
static void hikp_roce_trp_reg_data_free(uint32_t **offset, uint32_t **data)
|
|
diff --git a/net/roce/roce_tsp/hikp_roce_tsp.c b/net/roce/roce_tsp/hikp_roce_tsp.c
|
|
index 5d06ede..ca3126b 100644
|
|
--- a/net/roce/roce_tsp/hikp_roce_tsp.c
|
|
+++ b/net/roce/roce_tsp/hikp_roce_tsp.c
|
|
@@ -122,6 +122,7 @@ static int hikp_roce_tsp_get_data(struct hikp_cmd_ret **cmd_ret,
|
|
struct roce_tsp_req_param req_data, uint32_t sub_cmd_code)
|
|
{
|
|
struct hikp_cmd_header req_header = { 0 };
|
|
+ int ret;
|
|
|
|
if (g_roce_tsp_param_t.sub_cmd_code == 0) {
|
|
printf("please enter module name: -m/--modlue\n");
|
|
@@ -129,12 +130,14 @@ static int hikp_roce_tsp_get_data(struct hikp_cmd_ret **cmd_ret,
|
|
}
|
|
hikp_cmd_init(&req_header, ROCE_MOD, GET_ROCEE_TSP_CMD, sub_cmd_code);
|
|
*cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (*cmd_ret == NULL) {
|
|
- printf("hikptool roce_tsp cmd_ret malloc failed\n");
|
|
- return -EIO;
|
|
+ ret = hikp_rsp_normal_check(*cmd_ret);
|
|
+ if (ret) {
|
|
+ printf("hikptool roce_tsp get cmd data failed, ret: %d\n", ret);
|
|
+ free(*cmd_ret);
|
|
+ *cmd_ret = NULL;
|
|
}
|
|
|
|
- return 0;
|
|
+ return ret;
|
|
}
|
|
|
|
static void hikp_roce_tsp_print(uint32_t total_block_num,
|
|
diff --git a/sas/sas_func/sas_analy_queue.c b/sas/sas_func/sas_analy_queue.c
|
|
index ce886b9..8fca197 100644
|
|
--- a/sas/sas_func/sas_analy_queue.c
|
|
+++ b/sas/sas_func/sas_analy_queue.c
|
|
@@ -40,8 +40,9 @@ static int sas_get_res(const struct tool_sas_cmd *cmd, uint32_t *reg_save, uint3
|
|
hikp_cmd_init(&req_header, SAS_MOD, SAS_ANACQ, ANACQ_PRT);
|
|
|
|
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (cmd_ret == NULL) {
|
|
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
|
|
printf("sas_analy excutes hikp_cmd_alloc err\n");
|
|
+ free(cmd_ret);
|
|
return -EINVAL;
|
|
}
|
|
*reg_num = cmd_ret->rsp_data_num;
|
|
diff --git a/sas/sas_func/sas_dump_reg.c b/sas/sas_func/sas_dump_reg.c
|
|
index d012aa1..5736726 100644
|
|
--- a/sas/sas_func/sas_dump_reg.c
|
|
+++ b/sas/sas_func/sas_dump_reg.c
|
|
@@ -32,8 +32,9 @@ static int sas_get_reg(const struct tool_sas_cmd *cmd, uint32_t *reg_save, uint3
|
|
|
|
hikp_cmd_init(&req_header, SAS_MOD, SAS_DUMP, cmd->sas_cmd_type);
|
|
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (cmd_ret == NULL) {
|
|
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
|
|
printf("sas_dump excutes hikp_cmd_alloc err\n");
|
|
+ free(cmd_ret);
|
|
return -1;
|
|
}
|
|
*reg_num = cmd_ret->rsp_data_num;
|
|
diff --git a/sas/sas_func/sas_read_dev.c b/sas/sas_func/sas_read_dev.c
|
|
index d01f95f..8b9b58d 100644
|
|
--- a/sas/sas_func/sas_read_dev.c
|
|
+++ b/sas/sas_func/sas_read_dev.c
|
|
@@ -33,8 +33,9 @@ static int sas_get_dev(const struct tool_sas_cmd *cmd, uint32_t *reg_save, uint3
|
|
|
|
hikp_cmd_init(&req_header, SAS_MOD, SAS_DEV, cmd->sas_cmd_type);
|
|
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (cmd_ret == NULL) {
|
|
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
|
|
printf("sas_dqe excutes hikp_cmd_alloc err\n");
|
|
+ free(cmd_ret);
|
|
return -EINVAL;
|
|
}
|
|
*reg_num = cmd_ret->rsp_data_num;
|
|
diff --git a/sas/sas_func/sas_read_dqe.c b/sas/sas_func/sas_read_dqe.c
|
|
index 2f653df..dbd30f3 100644
|
|
--- a/sas/sas_func/sas_read_dqe.c
|
|
+++ b/sas/sas_func/sas_read_dqe.c
|
|
@@ -33,8 +33,9 @@ static int sas_get_dqe(const struct tool_sas_cmd *cmd, uint32_t *reg_save, uint3
|
|
|
|
hikp_cmd_init(&req_header, SAS_MOD, SAS_DQE, cmd->sas_cmd_type);
|
|
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (cmd_ret == NULL) {
|
|
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
|
|
printf("sas_dqe excutes hikp_cmd_alloc err\n");
|
|
+ free(cmd_ret);
|
|
return -EINVAL;
|
|
}
|
|
*reg_num = cmd_ret->rsp_data_num;
|
|
diff --git a/sas/sas_func/sas_read_errcode.c b/sas/sas_func/sas_read_errcode.c
|
|
index 4f89bda..6c7850e 100644
|
|
--- a/sas/sas_func/sas_read_errcode.c
|
|
+++ b/sas/sas_func/sas_read_errcode.c
|
|
@@ -31,8 +31,9 @@ static int sas_get_errcode(const struct tool_sas_cmd *cmd, uint32_t *reg_save, u
|
|
|
|
hikp_cmd_init(&req_header, SAS_MOD, SAS_ERRCODE, cmd->sas_cmd_type);
|
|
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (cmd_ret == NULL) {
|
|
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
|
|
printf("sas_errcode excutes hikp_cmd_alloc err\n");
|
|
+ free(cmd_ret);
|
|
return -EINVAL;
|
|
}
|
|
*reg_num = cmd_ret->rsp_data_num;
|
|
diff --git a/sata/sata_func/sata_dump_reg.c b/sata/sata_func/sata_dump_reg.c
|
|
index 86f6760..b4ff35f 100644
|
|
--- a/sata/sata_func/sata_dump_reg.c
|
|
+++ b/sata/sata_func/sata_dump_reg.c
|
|
@@ -33,8 +33,9 @@ static int sata_get_reg(const struct tool_sata_cmd *cmd, uint32_t *reg_save, uin
|
|
|
|
hikp_cmd_init(&req_header, SATA_MOD, SATA_DUMP, cmd->sata_cmd_type);
|
|
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (cmd_ret == NULL) {
|
|
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
|
|
printf("hikp_data_proc err\n");
|
|
+ free(cmd_ret);
|
|
return -1;
|
|
}
|
|
*reg_num = cmd_ret->rsp_data_num;
|
|
diff --git a/serdes/hikp_serdes.c b/serdes/hikp_serdes.c
|
|
index 527fd53..320ded2 100644
|
|
--- a/serdes/hikp_serdes.c
|
|
+++ b/serdes/hikp_serdes.c
|
|
@@ -309,10 +309,10 @@ static void hikp_serdes_info_cmd_execute(struct major_cmd_ctrl *self)
|
|
|
|
hikp_cmd_init(&req_header, SERDES_MOD, SERDES_KEY_INFO, g_serdes_param.sub_cmd);
|
|
cmd_ret = hikp_cmd_alloc(&req_header, &hilink_cmd, sizeof(hilink_cmd));
|
|
- if (cmd_ret == NULL) {
|
|
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
|
|
snprintf(self->err_str, sizeof(self->err_str), "hikp_cmd_alloc err.");
|
|
self->err_no = -EINVAL;
|
|
- return;
|
|
+ goto err_out;
|
|
}
|
|
out_out_header_size = sizeof(out_put.str_len) + sizeof(out_put.result_offset) +
|
|
sizeof(out_put.type) + sizeof(out_put.ret_val);
|
|
@@ -467,10 +467,10 @@ static void hikp_serdes_dump_cmd_execute(struct major_cmd_ctrl *self)
|
|
|
|
hikp_cmd_init(&req_header, SERDES_MOD, SERDES_DUMP_REG, g_serdes_param.sub_cmd);
|
|
cmd_ret = hikp_cmd_alloc(&req_header, &hilink_cmd, sizeof(hilink_cmd));
|
|
- if (cmd_ret == NULL) {
|
|
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
|
|
self->err_no = -EINVAL;
|
|
snprintf(self->err_str, sizeof(self->err_str), "hikp_cmd_alloc err.");
|
|
- return;
|
|
+ goto err_out;
|
|
}
|
|
out_out_header_size = sizeof(out_put.str_len) + sizeof(out_put.result_offset) +
|
|
sizeof(out_put.type) + sizeof(out_put.ret_val);
|
|
diff --git a/socip/hikp_socip_dumpreg.c b/socip/hikp_socip_dumpreg.c
|
|
index 32325bb..0153dd9 100644
|
|
--- a/socip/hikp_socip_dumpreg.c
|
|
+++ b/socip/hikp_socip_dumpreg.c
|
|
@@ -141,9 +141,11 @@ static void hikp_socip_dumpreg_execute(struct major_cmd_ctrl *self)
|
|
req_data.controller_id = param[CONTROLLER_ID_INDEX].val;
|
|
hikp_cmd_init(&req_header, SOCIP_MOD, HIKP_SOCIP_CMD_DUMPREG, param[MODULE_ID_INDEX].val);
|
|
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
|
|
- if (!cmd_ret) {
|
|
+ if (!cmd_ret || cmd_ret->status != 0) {
|
|
self->err_no = -EINVAL;
|
|
HIKP_ERROR_PRINT("hikp_cmd_alloc\n");
|
|
+ free(cmd_ret);
|
|
+ cmd_ret = NULL;
|
|
return;
|
|
}
|
|
|
|
--
|
|
2.36.1.windows.1
|
|
|