From faccc8979f5a6e458b02c7865b9e3316b9facfd1 Mon Sep 17 00:00:00 2001 From: veega2022 Date: Wed, 8 Nov 2023 20:43:06 +0800 Subject: [PATCH] hikptool: Resolved some centralized code review comments. 1. The ret variable may be a random value. 2. The unsigned variable judgment branch is redundant judgment. 3. Fix Magic Numbers. 4. The print format does not match. 5. After the pointer is released, a null value is assigned to the pointer to prevent it from being used again. 6. Delete unused variables. 7. The uint64_t print issue is rectified and PRIx64/PRIu64 is used. 8. Add 'const' to constant array. 9. Modifying File Permissions.Eliminate software privilege escalation risks. Signed-off-by: veega2022 --- cxl/func_lib/cxl_func/cxl_feature.c | 16 +++---- cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c | 2 +- libhikptdev/src/rciep/hikpt_rciep.c | 22 ++++----- libhikptdev/src/rciep/hikpt_rciep.h | 2 + net/hikp_net_lib.c | 33 +++++++------ net/hikp_net_lib.h | 6 +-- net/nic/nic_dfx/hikp_nic_dfx.c | 1 - net/nic/nic_fd/hikp_nic_fd.c | 48 +++++++++---------- net/nic/nic_fec/hikp_nic_fec.c | 7 +-- net/nic/nic_info/hikp_nic_info.c | 9 ++-- net/nic/nic_log/hikp_nic_log.c | 2 +- net/nic/nic_ppp/hikp_nic_ppp.c | 27 +++++++---- net/nic/nic_qos/hikp_nic_qos.c | 9 ++-- net/nic/nic_queue/hikp_nic_queue.c | 3 +- net/nic/nic_rss/hikp_nic_rss.c | 3 +- .../roce_ext_common/hikp_roce_ext_common.c | 12 +++-- net/roce/roce_gmv/hikp_roce_gmv.c | 8 ++-- net/roce/roce_mdb/hikp_roce_mdb.c | 1 - net/roce/roce_qmm/hikp_roce_qmm.c | 8 ++-- net/roce/roce_scc/hikp_roce_scc.c | 6 +-- net/roce/roce_timer/hikp_roce_timer.c | 2 +- net/roce/roce_trp/hikp_roce_trp.c | 18 ++++--- net/roce/roce_tsp/hikp_roce_tsp.c | 7 +-- net/ub/ub_crd/hikp_ub_crd.c | 1 - net/ub/ub_ppp/hikp_unic_ppp.c | 5 ++ ossl/ossl_user_linux.c | 1 - pcie/func_lib/pcie_func/pcie_link_ltssm.c | 3 +- pcie/func_lib/pcie_func/pcie_link_ltssm.h | 1 + pcie/func_lib/pcie_func/pcie_reg_dump.c | 4 +- pcie/func_lib/pcie_func/pcie_statistics.c | 4 +- sas/sas_func/sas_read_dev.c | 2 - sas/sas_func/sas_read_dqe.c | 4 +- sas/user_cmd/cmd_code/sas_cmd_dqe.c | 1 - sas/user_cmd/cmd_code/sas_cmd_dump.c | 1 - serdes/hikp_serdes.c | 4 +- socip/hikp_socip_dumpreg.c | 1 - tool_lib/op_logs.c | 18 ++++--- tool_lib/tool_cmd.c | 1 - tool_lib/tool_lib.c | 3 ++ 39 files changed, 161 insertions(+), 145 deletions(-) diff --git a/cxl/func_lib/cxl_func/cxl_feature.c b/cxl/func_lib/cxl_func/cxl_feature.c index 6de3f89..cd41b09 100644 --- a/cxl/func_lib/cxl_func/cxl_feature.c +++ b/cxl/func_lib/cxl_func/cxl_feature.c @@ -77,13 +77,9 @@ static void cxl_dl_fsm_str_get(struct cxl_fsm_state_str *fsm_str_table, { int i = 0; - while (fsm_str_table[i].fsm_state >= 0) { - if ((uint32_t)fsm_str_table[i].fsm_state != fsm_state) { - i++; - continue; - } - break; - } + while (fsm_str_table[i].fsm_state >= 0 && + (uint32_t)fsm_str_table[i].fsm_state != fsm_state) + i++; *fsm_s = fsm_str_table[i].fsm_str; } @@ -95,7 +91,7 @@ static void cxl_dl_fsm_state_print(const struct cxl_data_unit *data, uint32_t da struct cxl_fsm_state_str rrsm_state[] = { {0x0, "retry_remote_normal"}, {0x1, "retry_llrack"}, - {-1, "unknow"} + {-1, "unknown"} }; struct cxl_fsm_state_str lrsm_state[] = { {0x1, "retry_local_normal"}, @@ -103,14 +99,14 @@ static void cxl_dl_fsm_state_print(const struct cxl_data_unit *data, uint32_t da {0x4, "retry_phy_reinit"}, {0x8, "retry_local_idle"}, {0x10, "retry_abort"}, - {-1, "unknow"} + {-1, "unknown"} }; struct cxl_fsm_state_str init_fsm_state[] = { {0x1, "inactive"}, {0x2, "retry"}, {0x4, "param"}, {0x8, "active"}, - {-1, "unknow"} + {-1, "unknown"} }; if (data_unit_len == 0) { diff --git a/cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c b/cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c index 2607705..2df9dc5 100644 --- a/cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c +++ b/cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c @@ -46,7 +46,7 @@ static int cxl_port_id_set(struct major_cmd_ctrl *self, const char *argv) ret = string_toui(argv, &val); if (ret) { - printf("cpa set port id err %d\n", ret); + printf("cxl cpa set port id err %d\n", ret); return ret; } g_cxl_cpa_cmd.port_id = val; diff --git a/libhikptdev/src/rciep/hikpt_rciep.c b/libhikptdev/src/rciep/hikpt_rciep.c index 5c7e82f..f673dd0 100644 --- a/libhikptdev/src/rciep/hikpt_rciep.c +++ b/libhikptdev/src/rciep/hikpt_rciep.c @@ -41,7 +41,7 @@ static int hikp_memcpy_io(void *dst, size_t dst_size, void const *src, size_t sr if (dst_size < src_size) return -EINVAL; - for (i = 0; i < src_size / sizeof(uint32_t); i++) + for (i = 0; i < src_size / REP_DATA_BLK_SIZE; i++) ((uint32_t *)dst)[i] = ((uint32_t *)src)[i]; return 0; @@ -148,13 +148,13 @@ static int hikp_rep_init(void const *req_data, uint32_t req_size, printf("The request data is NULL.\n"); return -EINVAL; } - data_num = (req_size + (sizeof(uint32_t) - 1)) / sizeof(uint32_t); + data_num = (req_size + (REP_DATA_BLK_SIZE - 1)) / REP_DATA_BLK_SIZE; if (data_num > HIKP_REQ_DATA_MAX) { - printf("request data num(%u) exceeds max size(%u).\n", data_num, HIKP_REQ_DATA_MAX); + printf("request data num(%zu) exceeds max size(%u).\n", data_num, HIKP_REQ_DATA_MAX); return -EINVAL; } if (data_num != 0) { - *align_req_data = (uint32_t *)calloc(data_num, sizeof(uint32_t)); + *align_req_data = (uint32_t *)calloc(data_num, REP_DATA_BLK_SIZE); if (*align_req_data == NULL) { printf("request memory malloc failed.\n"); return -ENOMEM; @@ -175,12 +175,12 @@ static int hikp_req_first_round(uint32_t *req_data, uint32_t rep_num, uint32_t * if (req_data == NULL) return 0; - src_size = rep_num * sizeof(uint32_t); + src_size = rep_num * REP_DATA_BLK_SIZE; dst_size = sizeof(g_hikp_req->field.data); hikp_memclr_io(); ret = hikp_memcpy_io((uint32_t *)(g_hikp_req->field.data), dst_size, req_data, src_size); if (ret != 0) { - printf("size error, dst_size:%u, src_size:%u.\n", dst_size, src_size); + printf("size error, dst_size:%zu, src_size:%zu.\n", dst_size, src_size); return ret; } g_hikp_req->field.exe_round = 0; @@ -209,7 +209,7 @@ static int hikp_multi_round_interact(struct hikp_cmd_ret **cmd_ret, uint32_t sta } p_cmd_ret = (struct hikp_cmd_ret *)malloc(sizeof(struct hikp_cmd_ret) + - rsp_num * sizeof(uint32_t)); + rsp_num * REP_DATA_BLK_SIZE); if (p_cmd_ret == NULL) { printf("response memory malloc fail.\n"); return -ENOMEM; @@ -235,8 +235,8 @@ static int hikp_multi_round_interact(struct hikp_cmd_ret **cmd_ret, uint32_t sta } } src_size = (i == cycle - 1) ? - (rsp_num - (i * HIKP_RSP_DATA_MAX)) * sizeof(uint32_t) : - HIKP_RSP_DATA_MAX * sizeof(uint32_t); + (rsp_num - (i * HIKP_RSP_DATA_MAX)) * REP_DATA_BLK_SIZE : + HIKP_RSP_DATA_MAX * REP_DATA_BLK_SIZE; dst_size = src_size; (void)hikp_memcpy_io(&(p_cmd_ret->rsp_data)[i * HIKP_RSP_DATA_MAX], dst_size, (uint32_t *)(g_hikp_rsp->field.data), src_size); @@ -258,7 +258,7 @@ struct hikp_cmd_ret *hikp_cmd_alloc(struct hikp_cmd_header *req_header, { struct hikp_cmd_ret *cmd_ret = NULL; uint32_t *p_req_data = NULL; - uint32_t rep_num, rsp_num; + uint32_t rep_num; uint32_t cpl_status = HIKP_INIT_STAT; int ret; @@ -557,7 +557,7 @@ int hikp_dev_init(void) goto out_unmap; } - len = (sizeof(union hikp_space_req) - sizeof(struct iep_doorbell)) / sizeof(uint32_t); + len = (sizeof(union hikp_space_req) - sizeof(struct iep_doorbell)) / REP_DATA_BLK_SIZE; for (i = 0; i < len; i++) g_hikp_req->dw[i] = 0; diff --git a/libhikptdev/src/rciep/hikpt_rciep.h b/libhikptdev/src/rciep/hikpt_rciep.h index dd08759..296d235 100644 --- a/libhikptdev/src/rciep/hikpt_rciep.h +++ b/libhikptdev/src/rciep/hikpt_rciep.h @@ -42,6 +42,8 @@ #define CPL_CHECK_GAP_US 1000 #define WAIT_CPL_MAX_MS 8000 +#define REP_DATA_BLK_SIZE sizeof(uint32_t) + enum { HIKP_RESOURCE_DIR, HIKP_CONFIG_DIR, diff --git a/net/hikp_net_lib.c b/net/hikp_net_lib.c index eba086e..8db4ad5 100644 --- a/net/hikp_net_lib.c +++ b/net/hikp_net_lib.c @@ -23,7 +23,7 @@ #include "tool_lib.h" #include "hikptdev_plug.h" -static int hikp_read_net_pci_info(const char *file_path, uint32_t len, char *content) +static int hikp_read_net_pci_info(const char *file_path, char *content, size_t len) { char path[PATH_MAX + 1] = { 0 }; int ret; @@ -32,7 +32,7 @@ static int hikp_read_net_pci_info(const char *file_path, uint32_t len, char *con if (file_path == NULL || content == NULL) return -EINVAL; - if (len > MAX_PCI_ID_LEN) + if (len > MAX_PCI_ID_LEN + 1 || len < 1) return -EINVAL; if (strlen(file_path) > PATH_MAX || realpath(file_path, path) == NULL) @@ -42,12 +42,12 @@ static int hikp_read_net_pci_info(const char *file_path, uint32_t len, char *con if (fd < 0) return -EPERM; - ret = pread(fd, content, len, 0); + ret = pread(fd, content, len - 1, 0); if (ret < 0) { close(fd); return -EIO; } - content[len] = '\0'; // The invoker ensures that the bounds are not crossed. + content[len - 1] = '\0'; // The invoker ensures that the bounds are not crossed. close(fd); return 0; @@ -191,7 +191,7 @@ static int tool_get_bdf_by_dev_name(const char *name, struct tool_target *target int tool_check_and_get_valid_bdf_id(const char *name, struct tool_target *target) { if (!name || !target) - return 0; + return -EINVAL; if (interface_is_bdf_id(name, target)) return 0; @@ -211,11 +211,14 @@ bool is_dev_valid_and_special(int sockfd, struct tool_target *target) return true; } -int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id) +int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id, size_t id_len) { char revision_dir[MAX_BUS_PCI_DIR_LEN] = { 0 }; int ret; + if (id_len < MAX_PCI_ID_LEN + 1) + return -EINVAL; + ret = snprintf(revision_dir, sizeof(revision_dir), "%s%04x:%02x:%02x.%u%s", HIKP_BUS_PCI_DEV_DIR, bdf->domain, bdf->bus_id, bdf->dev_id, bdf->fun_id, HIKP_PCI_REVISION_DIR); @@ -223,14 +226,14 @@ int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id) HIKP_ERROR_PRINT("get revision dir fail.\n"); return -EIO; } - ret = hikp_read_net_pci_info((const char *)revision_dir, MAX_PCI_ID_LEN, revision_id); + ret = hikp_read_net_pci_info((const char *)revision_dir, revision_id, id_len); if (ret != 0) return ret; return 0; } -static int hikp_get_dir_name_of_device(const char *path, uint32_t len, char *dir_name) +static int hikp_get_dir_name_of_device(const char *path, size_t len, char *dir_name) { struct dirent *ptr; DIR *dir = NULL; @@ -261,12 +264,12 @@ static int hikp_get_dir_name_of_device(const char *path, uint32_t len, char *dir return closedir(dir); } -int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name) +int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name, size_t name_len) { char dev_name_dir[MAX_BUS_PCI_DIR_LEN] = { 0 }; int ret; - if (!dev_name || !bdf) + if (!dev_name || !bdf || name_len < IFNAMSIZ) return -EINVAL; /* if dev_name already has a value, we do not need to obtain it. */ @@ -283,7 +286,7 @@ int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name) if (!is_dir_exist(dev_name_dir)) return -ENOENT; - return hikp_get_dir_name_of_device(dev_name_dir, IFNAMSIZ, dev_name); + return hikp_get_dir_name_of_device(dev_name_dir, name_len, dev_name); } int get_vf_dev_info_by_pf_dev_name(const char *pf_dev_name, @@ -352,7 +355,7 @@ int get_numvfs_by_bdf(const struct bdf_t *bdf, uint8_t *numvfs) HIKP_ERROR_PRINT("get numvfs dir fail.\n"); return -EIO; } - ret = hikp_read_net_pci_info((const char *)numvfs_dir, MAX_PCI_ID_LEN, numvf); + ret = hikp_read_net_pci_info((const char *)numvfs_dir, numvf, MAX_PCI_ID_LEN + 1); if (ret != 0) return ret; @@ -366,12 +369,12 @@ int get_numvfs_by_bdf(const struct bdf_t *bdf, uint8_t *numvfs) return 0; } -void hikp_ether_format_addr(char *buf, uint16_t size, const uint8_t *mac_addr) +void hikp_ether_format_addr(char *buf, uint16_t size, const uint8_t *mac_addr, uint8_t mac_len) { int len; - if (buf == NULL || mac_addr == NULL) { - HIKP_WARN_PRINT("buf or mac_addr pointer is NULL.\n"); + if (buf == NULL || mac_addr == NULL || mac_len != HIKP_NIC_ETH_MAC_ADDR_LEN) { + HIKP_WARN_PRINT("buf or mac_addr pointer is NULL, or len(%u) is invalid\n", mac_len); return; } diff --git a/net/hikp_net_lib.h b/net/hikp_net_lib.h index ad9e7e4..8a0958f 100644 --- a/net/hikp_net_lib.h +++ b/net/hikp_net_lib.h @@ -130,12 +130,12 @@ enum nic_get_ncsi_sub_cmd { int hikp_net_creat_sock(void); int tool_check_and_get_valid_bdf_id(const char *name, struct tool_target *target); bool is_dev_valid_and_special(int sockfd, struct tool_target *target); -int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id); -int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name); +int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id, size_t id_len); +int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name, size_t name_len); int get_numvfs_by_bdf(const struct bdf_t *bdf, uint8_t *numvfs); int get_vf_dev_info_by_pf_dev_name(const char *pf_dev_name, struct tool_target *vf_target, uint8_t vf_id); int get_pf_dev_info_by_vf_dev_name(const char *vf_dev_name, struct tool_target *pf_target); -void hikp_ether_format_addr(char *buf, uint16_t size, const uint8_t *mac_addr); +void hikp_ether_format_addr(char *buf, uint16_t size, const uint8_t *mac_addr, uint8_t mac_len); #endif diff --git a/net/nic/nic_dfx/hikp_nic_dfx.c b/net/nic/nic_dfx/hikp_nic_dfx.c index c734ce0..4095229 100644 --- a/net/nic/nic_dfx/hikp_nic_dfx.c +++ b/net/nic/nic_dfx/hikp_nic_dfx.c @@ -318,7 +318,6 @@ static void hikp_nic_dfx_cmd_execute(struct major_cmd_ctrl *self) uint32_t max_dfx_size; uint32_t version; uint32_t i; - int ret; if (!(g_dfx_param.flag & MODULE_SET_FLAG)) { self->err_no = -EINVAL; diff --git a/net/nic/nic_fd/hikp_nic_fd.c b/net/nic/nic_fd/hikp_nic_fd.c index 57bc94b..e699bf9 100644 --- a/net/nic/nic_fd/hikp_nic_fd.c +++ b/net/nic/nic_fd/hikp_nic_fd.c @@ -15,7 +15,7 @@ #include #include #include - +#include #include "hikp_nic_fd.h" struct key_info { @@ -255,13 +255,13 @@ static void hikp_nic_print_tuple(const struct key_info *tuple_key, case OUTER_SRC_MAC: case INNER_DST_MAC: case INNER_SRC_MAC: - printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask); + printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask); printf("%02x:%02x:%02x:%02x:%02x:%02x\n", *(tcam_y + 5), *(tcam_y + 4), *(tcam_y + 3), *(tcam_y + 2), *(tcam_y + 1), *tcam_y); break; case OUTER_ETH_TYPE: case INNER_ETH_TYPE: - printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask); + printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask); printf("0x%x\n", *(uint16_t *)tcam_y); break; case OUTER_VLAN_TAG_FST: @@ -276,7 +276,7 @@ static void hikp_nic_print_tuple(const struct key_info *tuple_key, case OUTER_DST_PORT: case INNER_SRC_PORT: case INNER_DST_PORT: - printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask); + printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask); printf("%u\n", *(uint16_t *)tcam_y); break; case OUTER_IP_TOS: @@ -284,25 +284,25 @@ static void hikp_nic_print_tuple(const struct key_info *tuple_key, case OUTER_IP_PROTO: case INNER_IP_PROTO: case OUTER_TUN_FLOW_ID: - printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask); + printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask); printf("0x%x\n", *tcam_y); break; case OUTER_SRC_IP: case OUTER_DST_IP: case INNER_SRC_IP: case INNER_DST_IP: - printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask); + printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask); printf("%u.%u.%u.%u\n", *(tcam_y + 3), *(tcam_y + 2), *(tcam_y + 1), *tcam_y); break; case OUTER_L4_RSV: case INNER_L4_RSV: - printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask); + printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask); printf("%u\n", *(uint32_t *)tcam_y); break; case OUTER_TUN_VNI: for (i = 0; i < HIKP_NIC_FD_TUN_VNI_LEN; i++) tun_vni |= (((uint32_t)*(tcam_y + i)) << (i * HIKP_BITS_PER_BYTE)); - printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask); + printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask); printf("0x%x\n", tun_vni); break; default: @@ -407,12 +407,12 @@ static void hikp_nic_fd_print_meta_data(struct nic_fd_rule_info *rule) meta_bytes = HIKP_DIV_ROUND_UP(active_meta_width, HIKP_BITS_PER_BYTE); meta_data_region = active_tcam_size - meta_bytes; if (meta_bytes > sizeof(meta_data)) { - printf("meta data copy size error, data size: 0x%x, max size: 0x%x\n", + printf("meta data copy size error, data size: %u, max size: %zu\n", meta_bytes, sizeof(meta_data)); return; } memcpy(&meta_data, &key_y[meta_data_region], meta_bytes); - printf("\t meta_data[meta_data=0x%llx]:\n", meta_data); + printf("\t meta_data[meta_data=0x%" PRIx64 "]:\n", meta_data); cur_pos = meta_bytes * HIKP_BITS_PER_BYTE; end = cur_pos - 1; for (i = MAX_META_DATA - 1; i >= 0; i--) { @@ -470,7 +470,7 @@ static void hikp_nic_fd_print_ad_data(struct nic_fd_rule_info *rule) uint64_t ad_data; ad_data = (uint64_t)rule->ad_data_h << NIC_FD_AD_DATA_S | rule->ad_data_l; - printf("\n\tAction[ad data: 0x%llx]:\n", ad_data); + printf("\n\tAction[ad data: 0x%" PRIx64 "]:\n", ad_data); hikp_nic_parse_ad_data(rule, &action); @@ -544,7 +544,7 @@ static void hikp_nic_show_fd_counter(const void *data) printf(" idx | hit_cnt\n"); for (i = 0; i < counter[stage_no].counter_size; i++) { entry = &counter[stage_no].entry[i]; - printf(" %3u | %llu\n", entry->idx, entry->value); + printf(" %3u | %" PRIu64 "\n", entry->idx, entry->value); } } @@ -554,7 +554,6 @@ static int hikp_nic_fd_get_blk(struct hikp_cmd_header *req_header, { struct hikp_cmd_ret *cmd_ret; struct nic_fd_rsp *rsp; - uint16_t idx; int ret = 0; cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data)); @@ -792,10 +791,13 @@ static void hikp_nic_fd_data_free(union nic_fd_feature_info *fd_data) const struct fd_feature_cmd *fd_cmd; fd_cmd = &g_fd_feature_cmd[g_fd_param.feature_idx]; - if (strcmp(fd_cmd->feature_name, NIC_FD_RULES_NAME) == 0) + if (strcmp(fd_cmd->feature_name, NIC_FD_RULES_NAME) == 0) { free(fd_data->rules[stage_no].rule); - else if (strcmp(fd_cmd->feature_name, NIC_FD_COUNTER_NAME) == 0) + fd_data->rules[stage_no].rule = NULL; + } else if (strcmp(fd_cmd->feature_name, NIC_FD_COUNTER_NAME) == 0) { free(fd_data->counter[stage_no].entry); + fd_data->counter[stage_no].entry = NULL; + } free(fd_data); } @@ -859,31 +861,27 @@ static int hikp_nic_fd_check_input_param(struct major_cmd_ctrl *self, if (bdf->dev_id != 0) { snprintf(self->err_str, sizeof(self->err_str), "VF does not support query!"); - self->err_no = -EINVAL; - return self->err_no; + return -EINVAL; } if (fd_param->feature_idx == -1) { hikp_nic_fd_cmd_help(self, NULL); snprintf(self->err_str, sizeof(self->err_str), "-du/--dump parameter error!"); - self->err_no = -EINVAL; - return self->err_no; + return -EINVAL; } fd_cmd = &g_fd_feature_cmd[g_fd_param.feature_idx]; if (fd_param->stage_no == -1 && fd_cmd->sub_cmd_code != NIC_FD_HW_INFO_DUMP) { snprintf(self->err_str, sizeof(self->err_str), "please input '-st/--stage' parameter."); - self->err_no = -EINVAL; - return self->err_no; + return -EINVAL; } if (fd_cmd->sub_cmd_code == NIC_FD_HW_INFO_DUMP && (fd_param->id != -1 || fd_param->stage_no != -1)) { snprintf(self->err_str, sizeof(self->err_str), "no need '-id/--index' and '-st/--stage' parameter."); - self->err_no = -EINVAL; - return self->err_no; + return -EINVAL; } return 0; @@ -899,8 +897,10 @@ static void hikp_nic_fd_cmd_execute(struct major_cmd_ctrl *self) int ret; ret = hikp_nic_fd_check_input_param(self, &g_fd_param); - if (ret != 0) + if (ret != 0) { + self->err_no = ret; return; + } ret = hikp_nic_get_fd_hw_info(bdf, &g_fd_hw_info); if (ret != 0) { diff --git a/net/nic/nic_fec/hikp_nic_fec.c b/net/nic/nic_fec/hikp_nic_fec.c index 5d9025c..342b3eb 100644 --- a/net/nic/nic_fec/hikp_nic_fec.c +++ b/net/nic/nic_fec/hikp_nic_fec.c @@ -15,7 +15,7 @@ #include #include #include - +#include #include "hikp_nic_fec.h" static struct tool_target g_fec_target; @@ -40,6 +40,7 @@ static int hikp_nic_fec_err_query(const struct bdf_t *bdf, struct nic_fec_err_in rsp = (struct nic_fec_rsp *)cmd_ret->rsp_data; *info = *(struct nic_fec_err_info *)rsp->data; free(cmd_ret); + cmd_ret = NULL; if (info->fec_mode >= NIC_FEC_MODE_BUTT) { HIKP_ERROR_PRINT("unknown fec mode: %u\n", info->fec_mode); @@ -71,7 +72,7 @@ static void hikp_nic_fec_err_show_basefec(const struct nic_fec_err_info *info) for (total = 0, i = 0; i < lane_num; i++) total += info->basefec.lane_corr_block_cnt[i]; - printf(" corrected_blocks: %llu\n", total); + printf(" corrected_blocks: %" PRIu64 "\n", total); for (i = 0; i < lane_num; i++) printf(" Lane %u: %u\n", i, info->basefec.lane_corr_block_cnt[i]); @@ -79,7 +80,7 @@ static void hikp_nic_fec_err_show_basefec(const struct nic_fec_err_info *info) for (total = 0, i = 0; i < lane_num; i++) total += info->basefec.lane_uncorr_block_cnt[i]; - printf(" uncorrectable_blocks: %llu\n", total); + printf(" uncorrectable_blocks: %" PRIu64 "\n", total); for (i = 0; i < lane_num; i++) printf(" Lane %u: %u\n", i, info->basefec.lane_uncorr_block_cnt[i]); } diff --git a/net/nic/nic_info/hikp_nic_info.c b/net/nic/nic_info/hikp_nic_info.c index d84ca18..cd78bc7 100644 --- a/net/nic/nic_info/hikp_nic_info.c +++ b/net/nic/nic_info/hikp_nic_info.c @@ -79,7 +79,8 @@ static int hikp_nic_get_curr_die_info(void) free(cmd_ret); cmd_ret = NULL; - ret = get_revision_id_by_bdf(&g_info_param.target.bdf, g_info_param.revision_id); + ret = get_revision_id_by_bdf(&g_info_param.target.bdf, g_info_param.revision_id, + sizeof(g_info_param.revision_id)); if (ret != 0) { HIKP_ERROR_PRINT("Getting revision fail.\n"); return ret; @@ -87,7 +88,8 @@ static int hikp_nic_get_curr_die_info(void) ret = get_numvfs_by_bdf(&g_info_param.target.bdf, &g_info_param.numvfs); if (ret != 0) HIKP_ERROR_PRINT("Getting numvfs fail, ret = %d.\n", ret); - ret = get_dev_name_by_bdf(&g_info_param.target.bdf, g_info_param.target.dev_name); + ret = get_dev_name_by_bdf(&g_info_param.target.bdf, g_info_param.target.dev_name, + sizeof(g_info_param.target.dev_name)); if ((ret != 0) && (ret != -ENOENT)) { HIKP_ERROR_PRINT("Getting dev name fail.\n"); return ret; @@ -258,7 +260,8 @@ static void hikp_nic_info_print_cur_vf(const struct bdf_t *bdf) printf("Current function is vf:\n"); printf("\t%-16s %04x:%02x:%02x.%u\n", "vf bdf id:", bdf->domain, bdf->bus_id, bdf->dev_id, bdf->fun_id); - ret = get_dev_name_by_bdf(&g_info_param.target.bdf, g_info_param.target.dev_name); + ret = get_dev_name_by_bdf(&g_info_param.target.bdf, g_info_param.target.dev_name, + sizeof(g_info_param.target.dev_name)); if ((ret != 0) && (ret != -ENOENT)) { HIKP_ERROR_PRINT("Getting dev name fail.\n"); return; diff --git a/net/nic/nic_log/hikp_nic_log.c b/net/nic/nic_log/hikp_nic_log.c index 5cafe4e..893aef1 100644 --- a/net/nic/nic_log/hikp_nic_log.c +++ b/net/nic/nic_log/hikp_nic_log.c @@ -113,7 +113,7 @@ static int hikp_nic_get_first_blk_info(uint32_t *total_blk_num, } *log_data = (uint8_t *)calloc(1, log_size); if (*log_data == NULL) { - HIKP_ERROR_PRINT("malloc log memory 0x%x failed.", log_size); + HIKP_ERROR_PRINT("calloc log memory 0x%x failed.", log_size); ret = -ENOMEM; goto err_out; } diff --git a/net/nic/nic_ppp/hikp_nic_ppp.c b/net/nic/nic_ppp/hikp_nic_ppp.c index b71fc48..7968ac3 100644 --- a/net/nic/nic_ppp/hikp_nic_ppp.c +++ b/net/nic/nic_ppp/hikp_nic_ppp.c @@ -95,7 +95,7 @@ static uint16_t hikp_nic_ppp_get_abs_func_id(const struct bdf_t *bdf, int relati static void hikp_nic_ppp_get_func_name(char *buf, uint8_t len, uint8_t id) { if (id > 0) - snprintf(buf, len, "vf%d", id - 1); + snprintf(buf, len, "vf%u", id - 1); else snprintf(buf, len, "pf"); } @@ -145,7 +145,8 @@ static void hikp_nic_ppp_show_key_mem(struct nic_mac_tbl *tbl, bool is_key_mem) uc_entry = &uc_tbl->entry[idx]; if (uc_entry->idx < g_ppp_hw_res.max_key_mem_size || !is_key_mem) { hikp_ether_format_addr(mac_str, - HIKP_NIC_ETH_ADDR_FMT_SIZE, uc_entry->mac_addr); + HIKP_NIC_ETH_ADDR_FMT_SIZE, uc_entry->mac_addr, + HIKP_NIC_ETH_MAC_ADDR_LEN); printf("%04u | %01u | %s | ", uc_entry->idx, uc_entry->valid, mac_str); printf("%04u | %u | %01u | ", uc_entry->vlan_id, uc_entry->vmdq1, uc_entry->mac_en); @@ -161,7 +162,8 @@ static void hikp_nic_ppp_show_key_mem(struct nic_mac_tbl *tbl, bool is_key_mem) mc_entry = &mc_tbl->entry[idx]; if (mc_entry->idx < g_ppp_hw_res.max_key_mem_size || !is_key_mem) { hikp_ether_format_addr(mac_str, - HIKP_NIC_ETH_ADDR_FMT_SIZE, mc_entry->mac_addr); + HIKP_NIC_ETH_ADDR_FMT_SIZE, mc_entry->mac_addr, + HIKP_NIC_ETH_MAC_ADDR_LEN); printf("%04u | %s | ", mc_entry->idx, mac_str); printf("%08x:%08x:%08x:%08x:%08x:%08x:%08x:%08x", mc_entry->function_bitmap[7], mc_entry->function_bitmap[6], @@ -191,7 +193,7 @@ static void hikp_nic_ppp_show_func_uc_mac_addr(struct mac_vlan_uc_tbl *uc_tbl, vf_id = hikp_get_field(uc_entry->e_vport, HIKP_NIC_VF_ID_MASK, HIKP_NIC_VF_ID_S); if (bdf->fun_id == pf_id && vf_id == func_id) { hikp_ether_format_addr(mac_str, HIKP_NIC_ETH_ADDR_FMT_SIZE, - uc_entry->mac_addr); + uc_entry->mac_addr, HIKP_NIC_ETH_MAC_ADDR_LEN); printf("\t%s\n", mac_str); } } @@ -205,7 +207,7 @@ static void hikp_nic_ppp_show_func_mc_mac_addr(struct mac_vlan_mc_tbl *mc_tbl, uint16_t abs_func_id; uint8_t offset; uint8_t idx; - uint8_t i; + uint32_t i; abs_func_id = hikp_nic_ppp_get_abs_func_id(bdf, func_id); idx = abs_func_id / HIKP_NIC_PPP_FUNC_BITMAP_SIZE; @@ -218,7 +220,7 @@ static void hikp_nic_ppp_show_func_mc_mac_addr(struct mac_vlan_mc_tbl *mc_tbl, if (hikp_get_bit(mc_entry->function_bitmap[idx], offset) != 0) { hikp_ether_format_addr(mac_str, HIKP_NIC_ETH_ADDR_FMT_SIZE, - mc_entry->mac_addr); + mc_entry->mac_addr, HIKP_NIC_ETH_MAC_ADDR_LEN); printf("\t%s\n", mac_str); } } @@ -401,7 +403,8 @@ static void hikp_nic_ppp_show_manager_tbl(const void *data) "| i_map | i_dir | e_type | pf_id | vf_id | q_id | drop\n"); for (i = 0; i < tbl->entry_size; i++) { entry = &tbl->entry[i]; - hikp_ether_format_addr(mac_str, HIKP_NIC_ETH_ADDR_FMT_SIZE, entry->mac_addr); + hikp_ether_format_addr(mac_str, HIKP_NIC_ETH_ADDR_FMT_SIZE, entry->mac_addr, + HIKP_NIC_ETH_MAC_ADDR_LEN); printf(" %02u | %s | %u ", entry->entry_no, mac_str, entry->mac_mask); printf("| %04x | %u | %04u | %u ", entry->ether_type, entry->ether_mask, entry->vlan_id, entry->vlan_mask); @@ -489,7 +492,7 @@ static int hikp_nic_ppp_get_blk(struct hikp_cmd_header *req_header, rsp = (struct nic_ppp_rsp *)cmd_ret->rsp_data; if (rsp->rsp_head.cur_blk_size > buf_len) { HIKP_ERROR_PRINT("nic_ppp block context copy size error, " - "buffer size=%u, data size=%u.\n", + "buffer size=%zu, data size=%u.\n", buf_len, rsp->rsp_head.cur_blk_size); ret = -EINVAL; goto out; @@ -791,6 +794,7 @@ static int hikp_nic_ppp_alloc_mac_tbl_entry(struct nic_mac_tbl *mac_tbl, if (mac_tbl->mc_tbl.entry == NULL) { HIKP_ERROR_PRINT("Fail to alloc mc_entry memory.\n"); free(mac_tbl->uc_tbl.entry); + mac_tbl->uc_tbl.entry = NULL; return -ENOMEM; } @@ -813,6 +817,7 @@ static int hikp_nic_ppp_alloc_vlan_tbl_entry(struct nic_vlan_tbl *vlan_tbl, if (vlan_tbl->vf_vlan_tbl.entry == NULL) { HIKP_ERROR_PRINT("Fail to alloc vf_vlan_tbl_entry memory.\n"); free(vlan_tbl->port_vlan_tbl.entry); + vlan_tbl->port_vlan_tbl.entry = NULL; return -ENOMEM; } @@ -872,16 +877,22 @@ static void hikp_nic_ppp_data_free(union nic_ppp_feature_info *ppp_data) if (strcmp(ppp_cmd->feature_name, NIC_PPP_MAC_TBL_NAME) == 0) { mac_tbl = &ppp_data->mac_tbl; free(mac_tbl->uc_tbl.entry); + mac_tbl->uc_tbl.entry = NULL; free(mac_tbl->mc_tbl.entry); + mac_tbl->mc_tbl.entry = NULL; } else if (strcmp(ppp_cmd->feature_name, NIC_PPP_VLAN_TBL_NAME) == 0) { vlan_tbl = &ppp_data->vlan_tbl; free(vlan_tbl->vf_vlan_tbl.entry); + vlan_tbl->vf_vlan_tbl.entry = NULL; free(vlan_tbl->port_vlan_tbl.entry); + vlan_tbl->port_vlan_tbl.entry = NULL; } else if (strcmp(ppp_cmd->feature_name, NIC_PPP_MNG_TBL_NAME) == 0) { mng_tbl = &ppp_data->mng_tbl; free(mng_tbl->entry); + mng_tbl->entry = NULL; } free(ppp_data); + ppp_data = NULL; } static int hikp_nic_ppp_check_optional_param(struct major_cmd_ctrl *self, diff --git a/net/nic/nic_qos/hikp_nic_qos.c b/net/nic/nic_qos/hikp_nic_qos.c index e3f0e9c..a09b4f1 100644 --- a/net/nic/nic_qos/hikp_nic_qos.c +++ b/net/nic/nic_qos/hikp_nic_qos.c @@ -98,12 +98,12 @@ static void hikp_nic_qos_show_dcb_info(const void *data) printf("PFC configuration\n"); printf(" PFC enable:"); for (up = 0; up < HIKP_NIC_MAX_USER_PRIO_NUM; up++) - printf(" %d", HI_BIT(up) & pfc->pfc_en ? 1 : 0); + printf(" %u", HI_BIT(up) & pfc->pfc_en ? 1 : 0); printf("\n"); printf(" TC enable:"); for (tc_no = 0; tc_no < HIKP_NIC_MAX_TC_NUM; tc_no++) - printf(" %d", HI_BIT(tc_no) & pfc->hw_tc_map ? 1 : 0); + printf(" %u", HI_BIT(tc_no) & pfc->hw_tc_map ? 1 : 0); printf("\n"); printf("ETS configuration\n"); @@ -176,7 +176,7 @@ static int hikp_nic_qos_get_blk(struct hikp_cmd_header *req_header, rsp = (struct nic_qos_rsp *)cmd_ret->rsp_data; if (rsp->rsp_head.cur_blk_size > buf_len) { HIKP_ERROR_PRINT("nic_qos block-%u copy size error, " - "buffer size=%u, data size=%u.\n", + "buffer size=%zu, data size=%u.\n", req_data->block_id, buf_len, rsp->rsp_head.cur_blk_size); ret = -EINVAL; goto out; @@ -198,7 +198,6 @@ static int hikp_nic_query_qos_feature(struct hikp_cmd_header *req_header, const size_t buf_len = sizeof(*data); uint32_t total_blk_size; uint8_t total_blk_num; - uint8_t blk_num = 0; uint8_t blk_id = 0; int ret; @@ -272,7 +271,7 @@ static void hikp_nic_qos_cmd_execute(struct major_cmd_ctrl *self) } memset(revision_id, 0, MAX_PCI_ID_LEN + 1); - ret = get_revision_id_by_bdf(bdf, revision_id); + ret = get_revision_id_by_bdf(bdf, revision_id, sizeof(g_qos_param.revision_id)); // show pfc threshold as default if get revision_id error if (ret) strncpy(g_qos_param.revision_id, HIKP_IEP_REVISION, diff --git a/net/nic/nic_queue/hikp_nic_queue.c b/net/nic/nic_queue/hikp_nic_queue.c index f229e09..fa3b9d3 100644 --- a/net/nic/nic_queue/hikp_nic_queue.c +++ b/net/nic/nic_queue/hikp_nic_queue.c @@ -248,7 +248,7 @@ static int hikp_nic_queue_get_blk(struct hikp_cmd_header *req_header, rsp = (struct nic_queue_rsp *)cmd_ret->rsp_data; if (rsp->rsp_head.cur_blk_size > buf_len) { HIKP_ERROR_PRINT("nic_queue block-%u copy size error, " - "buffer size=%u, data size=%u.\n", + "buffer size=%zu, data size=%u.\n", req_data->block_id, buf_len, rsp->rsp_head.cur_blk_size); ret = -EINVAL; goto out; @@ -340,7 +340,6 @@ static bool hikp_nic_queue_check_feature_para_vaild(const struct queue_feature_c static void hikp_nic_queue_cmd_execute(struct major_cmd_ctrl *self) { - struct bdf_t *bdf = &g_queue_param.target.bdf; const struct queue_feature_cmd *queue_cmd; union nic_queue_feature_info *queue_data; struct hikp_cmd_header req_header = {0}; diff --git a/net/nic/nic_rss/hikp_nic_rss.c b/net/nic/nic_rss/hikp_nic_rss.c index 5e4d261..ff1cfd2 100644 --- a/net/nic/nic_rss/hikp_nic_rss.c +++ b/net/nic/nic_rss/hikp_nic_rss.c @@ -366,7 +366,7 @@ static int hikp_nic_rss_get_blk(struct hikp_cmd_header *req_header, rsp = (struct nic_rss_rsp *)cmd_ret->rsp_data; if (rsp->rsp_head.cur_blk_size > buf_len) { HIKP_ERROR_PRINT("nic_rss block-%u copy size error, " - "buffer size=%u, data size=%u.\n", + "buffer size=%zu, data size=%u.\n", req_data->block_id, buf_len, rsp->rsp_head.cur_blk_size); ret = -EINVAL; goto out; @@ -388,7 +388,6 @@ static int hikp_nic_query_rss_feature(struct hikp_cmd_header *req_header, const size_t buf_len = sizeof(*data); uint32_t total_blk_size; uint8_t total_blk_num; - uint8_t blk_num = 0; uint8_t blk_id = 0; int ret; diff --git a/net/roce/roce_ext_common/hikp_roce_ext_common.c b/net/roce/roce_ext_common/hikp_roce_ext_common.c index d5ae64a..3a0c1ae 100644 --- a/net/roce/roce_ext_common/hikp_roce_ext_common.c +++ b/net/roce/roce_ext_common/hikp_roce_ext_common.c @@ -15,11 +15,15 @@ static void hikp_roce_ext_reg_data_free(struct reg_data *reg) { - if (reg->offset) + if (reg->offset) { free(reg->offset); + reg->offset = NULL; + } - if (reg->data) + if (reg->data) { free(reg->data); + reg->data = NULL; + } } static void hikp_roce_ext_cmd_ret_free(struct hikp_cmd_ret *cmd_ret) @@ -118,7 +122,7 @@ static int hikp_roce_ext_get_res(enum roce_cmd_type cmd_type, reg->offset = (uint32_t *)calloc(res_head->total_block_num, sizeof(uint32_t)); reg->data = (uint32_t *)calloc(res_head->total_block_num, sizeof(uint32_t)); if ((reg->offset == NULL) || (reg->data == NULL)) { - printf("hikptool roce_%s alloc log memmory 0x%x failed!\n", + printf("hikptool roce_%s alloc log memmory 0x%zx failed!\n", cmd_name, max_size); ret = -ENOMEM; hikp_roce_ext_reg_data_free(reg); @@ -128,7 +132,7 @@ static int hikp_roce_ext_get_res(enum roce_cmd_type cmd_type, cur_size = res_head->cur_block_num * sizeof(uint32_t); if (cur_size > max_size) { - printf("hikptool roce_%s log data copy size error, data size: 0x%x, max size: 0x%x\n", + printf("hikptool roce_%s log data copy size error, data size: 0x%zx, max size: 0x%zx\n", cmd_name, cur_size, max_size); ret = -EINVAL; hikp_roce_ext_reg_data_free(reg); diff --git a/net/roce/roce_gmv/hikp_roce_gmv.c b/net/roce/roce_gmv/hikp_roce_gmv.c index d65dc82..36ba665 100644 --- a/net/roce/roce_gmv/hikp_roce_gmv.c +++ b/net/roce/roce_gmv/hikp_roce_gmv.c @@ -44,16 +44,16 @@ static int hikp_roce_gmv_target(struct major_cmd_ctrl *self, const char *argv) static int hikp_roce_gmv_idxget(struct major_cmd_ctrl *self, const char *argv) { char *endptr = NULL; - int index; + uint64_t index; - index = strtol(argv, &endptr, 0); + index = strtoul(argv, &endptr, 0); if ((endptr <= argv) || (*endptr != '\0') || - (index < 0) || (index >= ROCE_MAX_HIKPTOOL_GMV)) { + (index >= ROCE_MAX_HIKPTOOL_GMV)) { snprintf(self->err_str, sizeof(self->err_str), "Invalid gmv_index."); self->err_no = -EINVAL; return -EINVAL; } - g_roce_gmv_param.gmv_index = index; + g_roce_gmv_param.gmv_index = (uint32_t)index; return 0; } diff --git a/net/roce/roce_mdb/hikp_roce_mdb.c b/net/roce/roce_mdb/hikp_roce_mdb.c index 04af817..374f100 100644 --- a/net/roce/roce_mdb/hikp_roce_mdb.c +++ b/net/roce/roce_mdb/hikp_roce_mdb.c @@ -89,7 +89,6 @@ static void hikp_roce_mdb_execute_origin(struct major_cmd_ctrl *self) struct roce_mdb_rsp_data *mdb_rsp = NULL; struct hikp_cmd_ret *cmd_ret = NULL; uint32_t reg_num; - int ret; self->err_no = hikp_roce_mdb_get_data(&cmd_ret, 0); if (self->err_no) { diff --git a/net/roce/roce_qmm/hikp_roce_qmm.c b/net/roce/roce_qmm/hikp_roce_qmm.c index d127264..e440b82 100644 --- a/net/roce/roce_qmm/hikp_roce_qmm.c +++ b/net/roce/roce_qmm/hikp_roce_qmm.c @@ -45,16 +45,16 @@ static int hikp_roce_qmm_target(struct major_cmd_ctrl *self, const char *argv) static int hikp_roce_qmm_bank_get(struct major_cmd_ctrl *self, const char *argv) { char *endptr = NULL; - int bank_num; + uint64_t bank_num; - bank_num = strtol(argv, &endptr, 0); - if ((endptr <= argv) || (*endptr != '\0') || bank_num > QMM_BANK_NUM || bank_num < 0) { + bank_num = strtoul(argv, &endptr, 0); + if ((endptr <= argv) || (*endptr != '\0') || bank_num > QMM_BANK_NUM) { snprintf(self->err_str, sizeof(self->err_str), "Invalid bank number!\n"); self->err_no = -EINVAL; return -EINVAL; } - g_roce_qmm_param.bank_id = bank_num; + g_roce_qmm_param.bank_id = (uint32_t)bank_num; return 0; } diff --git a/net/roce/roce_scc/hikp_roce_scc.c b/net/roce/roce_scc/hikp_roce_scc.c index e8e166d..fe08873 100644 --- a/net/roce/roce_scc/hikp_roce_scc.c +++ b/net/roce/roce_scc/hikp_roce_scc.c @@ -150,7 +150,7 @@ static int hikp_roce_scc_get_total_data_num(struct roce_scc_head *res_head, *offset = (uint32_t *)calloc(1, max_size); *data = (uint32_t *)calloc(1, max_size); if ((*offset == NULL) || (*data == NULL)) { - printf("hikptool roce_scc alloc log memmory 0x%x failed\n", max_size); + printf("hikptool roce_scc alloc log memmory 0x%zx failed\n", max_size); ret = -ENOMEM; goto get_data_error; } @@ -158,7 +158,7 @@ static int hikp_roce_scc_get_total_data_num(struct roce_scc_head *res_head, cur_size = roce_scc_res->head.cur_block_num * sizeof(uint32_t); if (cur_size > max_size) { printf("hikptool roce_scc log data copy size error, " - "data size: 0x%x, max size: 0x%x\n", cur_size, max_size); + "data size: 0x%zx, max size: 0x%zx\n", cur_size, max_size); ret = -EINVAL; goto get_data_error; } @@ -194,7 +194,7 @@ static int hikp_roce_scc_get_next_data(struct roce_scc_head *res_head, if (cur_size > data_size) { hikp_roce_scc_cmd_ret_free(&cmd_ret); printf("hikptool roce_scc next log data copy size error, " - "data size: 0x%x, max size: 0x%x\n", cur_size, data_size); + "data size: 0x%zx, max size: 0x%zx\n", cur_size, data_size); return -EINVAL; } memcpy(*offset, roce_scc_res->reg_data.offset, cur_size); diff --git a/net/roce/roce_timer/hikp_roce_timer.c b/net/roce/roce_timer/hikp_roce_timer.c index a78d383..05ad3e1 100644 --- a/net/roce/roce_timer/hikp_roce_timer.c +++ b/net/roce/roce_timer/hikp_roce_timer.c @@ -149,7 +149,7 @@ static void hikp_roce_timer_execute(struct major_cmd_ctrl *self) int (*func[])(struct major_cmd_ctrl *self) = { hikp_roce_timer_show_cqc, hikp_roce_timer_show_qpc }; - char *function[] = {"show cqc", "show qpc"}; + const char *function[] = {"show cqc", "show qpc"}; int i = 0; int ret; diff --git a/net/roce/roce_trp/hikp_roce_trp.c b/net/roce/roce_trp/hikp_roce_trp.c index 4591a47..fad3317 100644 --- a/net/roce/roce_trp/hikp_roce_trp.c +++ b/net/roce/roce_trp/hikp_roce_trp.c @@ -85,20 +85,17 @@ static int hikp_roce_trp_bank_get(struct major_cmd_ctrl *self, const char *argv) static int hikp_roce_trp_bank_check(void) { - uint32_t temp; - - temp = g_roce_trp_param_t.bank_id; switch (g_roce_trp_param_t.sub_cmd) { case (COMMON): - if (temp > TRP_MAX_BANK_NUM || temp < 0) + if (g_roce_trp_param_t.bank_id > TRP_MAX_BANK_NUM) return -EINVAL; break; case (PAYL): - if (temp > PAYL_MAX_BANK_NUM || temp < 0) + if (g_roce_trp_param_t.bank_id > PAYL_MAX_BANK_NUM) return -EINVAL; break; case (GEN_AC): - if (temp > GAC_MAX_BANK_NUM || temp < 0) + if (g_roce_trp_param_t.bank_id > GAC_MAX_BANK_NUM) return -EINVAL; break; default: @@ -173,7 +170,8 @@ static int hikp_roce_trp_get_total_data_num(struct roce_trp_head *res_head, *offset = (uint32_t *)calloc(1, max_size); *data = (uint32_t *)calloc(1, max_size); if ((*offset == NULL) || (*data == NULL)) { - printf("hikptool roce_trp alloc log memmory 0x%x failed\n", max_size); + printf("hikptool roce_trp alloc log memmory 0x%zx failed\n", max_size); + hikp_roce_trp_reg_data_free(offset, data); ret = -ENOMEM; goto get_data_error; } @@ -181,7 +179,8 @@ static int hikp_roce_trp_get_total_data_num(struct roce_trp_head *res_head, cur_size = roce_trp_res->head.cur_block_num * sizeof(uint32_t); if (cur_size > max_size) { printf("hikptool roce_trp log data copy size error, " - "data size: 0x%x, max size: 0x%x\n", cur_size, max_size); + "data size: 0x%zx, max size: 0x%zx\n", cur_size, max_size); + hikp_roce_trp_reg_data_free(offset, data); ret = -EINVAL; goto get_data_error; } @@ -218,7 +217,7 @@ static int hikp_roce_trp_get_next_data(struct roce_trp_head *res_head, if (cur_size > data_size) { hikp_roce_trp_cmd_ret_free(&cmd_ret); printf("hikptool roce_trp next log data copy size error, " - "data size: 0x%x, max size: 0x%x\n", cur_size, data_size); + "data size: 0x%zx, max size: 0x%zx\n", cur_size, data_size); return -EINVAL; } memcpy(*offset, roce_trp_res->reg_data.offset, cur_size); @@ -268,7 +267,6 @@ static void hikp_roce_trp_execute(struct major_cmd_ctrl *self) if (self->err_no) { snprintf(self->err_str, sizeof(self->err_str), "get the first roce_trp block dfx fail."); - hikp_roce_trp_reg_data_free(&offset, &data); return; } total_block_num = res_head.total_block_num; diff --git a/net/roce/roce_tsp/hikp_roce_tsp.c b/net/roce/roce_tsp/hikp_roce_tsp.c index 9469e4d..5bb2649 100644 --- a/net/roce/roce_tsp/hikp_roce_tsp.c +++ b/net/roce/roce_tsp/hikp_roce_tsp.c @@ -84,16 +84,13 @@ static int hikp_roce_tsp_bank_get(struct major_cmd_ctrl *self, const char *argv) static int hikp_roce_tsp_bank_check(void) { - uint32_t temp; - - temp = g_roce_tsp_param_t.bank_id; switch (g_roce_tsp_param_t.sub_cmd_code) { case (COMMON): - if ((temp > MAX_TSP_BANK_NUM) || temp < 0) + if (g_roce_tsp_param_t.bank_id > MAX_TSP_BANK_NUM) return -EINVAL; break; case (TGP_TMP): - if ((temp > MAX_TGP_TMP_BANK_NUM) || temp < 0) + if (g_roce_tsp_param_t.bank_id > MAX_TGP_TMP_BANK_NUM) return -EINVAL; break; default: diff --git a/net/ub/ub_crd/hikp_ub_crd.c b/net/ub/ub_crd/hikp_ub_crd.c index e207ea2..0e47b5b 100644 --- a/net/ub/ub_crd/hikp_ub_crd.c +++ b/net/ub/ub_crd/hikp_ub_crd.c @@ -64,7 +64,6 @@ static int hikp_ub_query_crd(void) struct hikp_cmd_ret *cmd_ret = NULL; struct ub_crd_rsp *crd_rsp = NULL; int offset; - int ret; char const *init_crds[][2] = { {"CFG_REMOTE_ICRD", "CFG_REMOTE_LCRD"}, diff --git a/net/ub/ub_ppp/hikp_unic_ppp.c b/net/ub/ub_ppp/hikp_unic_ppp.c index ccba4e0..bf0c026 100644 --- a/net/ub/ub_ppp/hikp_unic_ppp.c +++ b/net/ub/ub_ppp/hikp_unic_ppp.c @@ -191,6 +191,7 @@ static int hikp_unic_ppp_alloc_guid_tbl_entry(const struct hikp_unic_ppp_hw_reso if (guid_tbl->mc_tbl.entry == NULL) { HIKP_ERROR_PRINT("fail to alloc mc_guid_entry_table memory.\n"); free(guid_tbl->uc_tbl.entry); + guid_tbl->uc_tbl.entry = NULL; return -ENOMEM; } @@ -399,13 +400,17 @@ static void hikp_unic_ppp_data_free(union unic_ppp_feature_info *unic_ppp_data) if (g_unic_ppp_param.feature_idx == UNIC_PPP_IP_FEATURE_IDX) { ip_tbl = &unic_ppp_data->ip_tbl; free(ip_tbl->entry); + ip_tbl->entry = NULL; } else if (g_unic_ppp_param.feature_idx == UNIC_PPP_GUID_FEATURE_IDX) { guid_tbl = &unic_ppp_data->guid_tbl; free(guid_tbl->uc_tbl.entry); + guid_tbl->uc_tbl.entry = NULL; free(guid_tbl->mc_tbl.entry); + guid_tbl->mc_tbl.entry = NULL; } free(unic_ppp_data); + unic_ppp_data = NULL; } static void hikp_unic_ppp_cmd_execute(struct major_cmd_ctrl *self) diff --git a/ossl/ossl_user_linux.c b/ossl/ossl_user_linux.c index 8266a19..9dee61c 100644 --- a/ossl/ossl_user_linux.c +++ b/ossl/ossl_user_linux.c @@ -47,7 +47,6 @@ int uda_realpath(const char *file_dir, char *format_dir) int uda_fcntl(const char *lock_file, uint32_t operation, int *fd) { - uint32_t f_opt = 0; int fd_t = 0; int ret; diff --git a/pcie/func_lib/pcie_func/pcie_link_ltssm.c b/pcie/func_lib/pcie_func/pcie_link_ltssm.c index 9697529..66226e0 100644 --- a/pcie/func_lib/pcie_func/pcie_link_ltssm.c +++ b/pcie/func_lib/pcie_func/pcie_link_ltssm.c @@ -213,7 +213,7 @@ static int pcie_print_ltssm_trace(const uint64_t *ltssm_input, uint32_t ltssm_nu (uint32_t)ltssm_val.bits.any_change_pipe_req, (uint32_t)ltssm_val.bits.rxl0s_st, (uint32_t)ltssm_val.bits.train_bit_map1, - (((uint32_t)ltssm_val.bits.rxl0s_st) << 2) | + (((uint32_t)ltssm_val.bits.rxl0s_st) << GEN5_BIT_OFFEST) | ((uint32_t)ltssm_val.bits.mac_rate), (uint32_t)ltssm_val.bits.duration_counter, (uint32_t)ltssm_val.bits.ltssm_state, @@ -271,7 +271,6 @@ int pcie_ltssm_trace_clear(uint32_t port_id) int pcie_ltssm_link_status_get(uint32_t port_id) { - uint32_t i; union pcie_link_info reg_val; struct hikp_cmd_header req_header; struct hikp_cmd_ret *cmd_ret; diff --git a/pcie/func_lib/pcie_func/pcie_link_ltssm.h b/pcie/func_lib/pcie_func/pcie_link_ltssm.h index 8f3502b..cc51501 100644 --- a/pcie/func_lib/pcie_func/pcie_link_ltssm.h +++ b/pcie/func_lib/pcie_func/pcie_link_ltssm.h @@ -19,6 +19,7 @@ #define TRACE_STR_NUM 0x20 #define TRACER_DEPTH 65 #define PM_TRACE_STR_NUM 0x28 +#define GEN5_BIT_OFFEST 2 struct pcie_ltssm_num_string { int ltssm; diff --git a/pcie/func_lib/pcie_func/pcie_reg_dump.c b/pcie/func_lib/pcie_func/pcie_reg_dump.c index aac3843..b8c2241 100644 --- a/pcie/func_lib/pcie_func/pcie_reg_dump.c +++ b/pcie/func_lib/pcie_func/pcie_reg_dump.c @@ -405,7 +405,7 @@ static int pcie_create_dumpreg_log_file(uint32_t port_id, uint32_t dump_level) (void)remove((const char *)file_name); /* Add write permission to the file */ - fd_file = open(file_name, O_RDWR | O_SYNC | O_CREAT, 0640); + fd_file = open(file_name, O_RDWR | O_SYNC | O_CREAT, 0600); if (fd_file < 0) { Err("PCIe DUMPREG", "open %s failed.\n", file_name); return -EPERM; @@ -419,7 +419,7 @@ static int pcie_close_dumpreg_log_file(void) { int ret; - ret = fchmod(g_pcie_dumpreg_fd, 0440); + ret = fchmod(g_pcie_dumpreg_fd, 0400); close(g_pcie_dumpreg_fd); /* Revoke write permission of file */ g_pcie_dumpreg_fd = -1; diff --git a/pcie/func_lib/pcie_func/pcie_statistics.c b/pcie/func_lib/pcie_func/pcie_statistics.c index 40e5645..ed42cec 100644 --- a/pcie/func_lib/pcie_func/pcie_statistics.c +++ b/pcie/func_lib/pcie_func/pcie_statistics.c @@ -63,7 +63,7 @@ static int port_distribution_rsp_data_check(const struct hikp_cmd_ret *cmd_ret, } static int pcie_portid_serdes_relation(const struct pcie_macro_info *macro_info, - uint32_t macro_num, uint32_t ndie_id) + uint32_t macro_num, uint32_t ndie_id) { uint32_t i, j; @@ -90,7 +90,7 @@ int pcie_port_distribution_get(uint32_t chip_id) struct hikp_cmd_header req_header; struct hikp_cmd_ret *cmd_ret; struct pcie_info_req_para req_data = { 0 }; - uint32_t src_size, dst_size, pair_num; + uint32_t pair_num; struct pcie_port_info *port_info; uint32_t i; int ret; diff --git a/sas/sas_func/sas_read_dev.c b/sas/sas_func/sas_read_dev.c index 3a3db07..670e2d4 100644 --- a/sas/sas_func/sas_read_dev.c +++ b/sas/sas_func/sas_read_dev.c @@ -78,8 +78,6 @@ static void print_dev_link(const uint32_t *reg_save, uint32_t reg_num) static void sas_print_dev(const uint32_t *reg_save, uint32_t reg_num, uint32_t cmd_type) { - uint32_t i; - if (reg_num == 0) { printf("SAS device is failed\n"); return; diff --git a/sas/sas_func/sas_read_dqe.c b/sas/sas_func/sas_read_dqe.c index dbd30f3..7d49c0a 100644 --- a/sas/sas_func/sas_read_dqe.c +++ b/sas/sas_func/sas_read_dqe.c @@ -57,7 +57,7 @@ static void print_dqe_info(const void *reg_save, uint32_t reg_num) printf("TLR_Ctrl: %u\n", dqe->dw0.TLR_Ctrl); printf("Phy_ID: %u\n", dqe->dw0.Phy_ID); printf("Force_Phy: %u\n", dqe->dw0.Force_Phy); - printf("PORT: 0x%llx\n", dqe->dw0.PORT); + printf("PORT: 0x%x\n", dqe->dw0.PORT); printf("PRI: %u\n", dqe->dw0.PRI); printf("CMD: %u\n", dqe->dw0.CMD); @@ -68,7 +68,7 @@ static void print_dqe_info(const void *reg_save, uint32_t reg_num) printf("Reset: %u\n", dqe->dw1.Reset); printf("PIR_Present: %u\n", dqe->dw1.PIR_Present); printf("Enable_Transport_Layer_Retry: %u\n", dqe->dw1.Enable_Transport_Layer_Retry); - printf("Verify_Data_Transfer_Length: 0x%llx\n", dqe->dw1.Verify_Data_Transfer_Length); + printf("Verify_Data_Transfer_Length: 0x%x\n", dqe->dw1.Verify_Data_Transfer_Length); printf("Frame_Type: %u\n", dqe->dw1.Frame_Type); printf("Device_ID: %u\n", dqe->dw1.Device_ID); diff --git a/sas/user_cmd/cmd_code/sas_cmd_dqe.c b/sas/user_cmd/cmd_code/sas_cmd_dqe.c index 4a9547a..26bf0eb 100644 --- a/sas/user_cmd/cmd_code/sas_cmd_dqe.c +++ b/sas/user_cmd/cmd_code/sas_cmd_dqe.c @@ -44,7 +44,6 @@ static int sas_dqe_info(struct major_cmd_ctrl *self, const char *argv) static int sas_set_queue_id(struct major_cmd_ctrl *self, const char *argv) { int ret; - uint32_t val = 0; ret = sas_set_que_id(self, argv); if (ret || sas_get_que_id() >= SAS_QUEUE_NUM) { diff --git a/sas/user_cmd/cmd_code/sas_cmd_dump.c b/sas/user_cmd/cmd_code/sas_cmd_dump.c index 4f2cfea..e7dedf0 100644 --- a/sas/user_cmd/cmd_code/sas_cmd_dump.c +++ b/sas/user_cmd/cmd_code/sas_cmd_dump.c @@ -42,7 +42,6 @@ static int sas_dump_global(struct major_cmd_ctrl *self, const char *argv) static int sas_dump_phyx(struct major_cmd_ctrl *self, char const *argv) { int ret; - uint32_t val = 0; (void)sas_set_cmd_type(DUMP_PHYX); ret = sas_set_phy_id(self, argv); diff --git a/serdes/hikp_serdes.c b/serdes/hikp_serdes.c index 320ded2..4afcb9b 100644 --- a/serdes/hikp_serdes.c +++ b/serdes/hikp_serdes.c @@ -322,7 +322,7 @@ static void hikp_serdes_info_cmd_execute(struct major_cmd_ctrl *self) SERDES_OUTPUT_MAX_SIZE) { self->err_no = -EINVAL; snprintf(self->err_str, sizeof(self->err_str), - "serdes_info rsp_data data copy size error, data size:0x%x max size:0x%x.", + "serdes_info rsp_data data copy size error, data size:0x%zx max size:0x%x.", (cmd_ret->rsp_data_num * sizeof(uint32_t) - out_out_header_size), SERDES_OUTPUT_MAX_SIZE); goto err_out; @@ -480,7 +480,7 @@ static void hikp_serdes_dump_cmd_execute(struct major_cmd_ctrl *self) SERDES_OUTPUT_MAX_SIZE) { self->err_no = -EINVAL; snprintf(self->err_str, sizeof(self->err_str), - "serdes_dump rsp_data data copy size error, data size:0x%x max size:0x%x.", + "serdes_dump rsp_data data copy size error, data size:0x%zx max size:0x%x.", (cmd_ret->rsp_data_num * sizeof(uint32_t) - out_out_header_size), SERDES_OUTPUT_MAX_SIZE); goto err_out; diff --git a/socip/hikp_socip_dumpreg.c b/socip/hikp_socip_dumpreg.c index 0153dd9..7b11523 100644 --- a/socip/hikp_socip_dumpreg.c +++ b/socip/hikp_socip_dumpreg.c @@ -108,7 +108,6 @@ static bool check_socip_dumpreg_param(void) static void dump_reg_info(const uint32_t *reg_data, uint32_t data_num) { #define ONE_LINE_PRINT_DATA_NUM 4 - struct dump_reg_param_t *param = &g_dump_reg_param[0]; uint32_t i; for (i = 0; i < data_num; i++) { diff --git a/tool_lib/op_logs.c b/tool_lib/op_logs.c index d91ddb0..f57f5fd 100644 --- a/tool_lib/op_logs.c +++ b/tool_lib/op_logs.c @@ -29,7 +29,6 @@ static void op_log_write(const char *log_data) { size_t w_size; FILE *fd; - int ret; if (strlen(g_op_log) == 0) return; @@ -108,8 +107,6 @@ static int op_log_add_time_to_log(char *log_base, int *offset, uint32_t flag) struct timeval tv; struct tm ptm; int len = 0; - long usec; - long sec; int ret; (void)gettimeofday(&tv, NULL); @@ -118,12 +115,18 @@ static int op_log_add_time_to_log(char *log_base, int *offset, uint32_t flag) g_tv = tv; len = (int)strftime(log_base + *offset, (OP_LOG_FILE_W_MAXSIZE + 1 - *offset), OP_LOG_TIME_TEMP, &ptm); + if ((*offset + len) >= (OP_LOG_FILE_W_MAXSIZE + 1)) + return -ENOMEM; + ret = snprintf(log_base + *offset + len, (OP_LOG_FILE_W_MAXSIZE + 1 - *offset - len), OP_LOG_SEC_TIME_TEMP, tv.tv_sec + tv.tv_usec / OP_LOG_SEC_AND_MICROSEC_TRANS); - } else if (flag == LOG_FLAG_ONLY_TIME) { + } else { len = (int)strftime(log_base + *offset, (OP_LOG_FILE_W_MAXSIZE + 1 - *offset), OP_LOG_RESULT_TIME_TEMP, &ptm); + if ((*offset + len) >= (OP_LOG_FILE_W_MAXSIZE + 1)) + return -ENOMEM; + ret = snprintf(log_base + *offset + len, (OP_LOG_FILE_W_MAXSIZE + 1 - *offset - len), OP_LOG_SEC_TIME_TEMP, @@ -157,7 +160,6 @@ static int op_log_file_rollback(const char *op_log_backup, const char *log_dir) char rollback_log[OP_LOG_FILE_W_MAXSIZE + 1] = {0}; int offset = 0; int ret; - int len; ret = file_rollback(g_op_log, op_log_backup, OP_LOG_FILE_MAX_SIZE); if (ret) { @@ -280,10 +282,14 @@ void op_log_record_input(const int argc, const char **argv) arg = input_str; for (i = 0; i < argc; i++) { - snprintf(arg, (sizeof(input_str) - (arg - input_str)), "%s ", argv[i]); + ret = snprintf(arg, (sizeof(input_str) - (arg - input_str)), "%s ", argv[i]); + if (ret < 0 || ret >= (sizeof(input_str) - (arg - input_str))) + return; + arg = arg + strlen(argv[i]) + 1; } input_str[strlen(input_str) - 1] = 0; + arr_size = HIKP_ARRAY_SIZE(log_info); for (i = 0; i < arr_size; i++) { ret = snprintf(g_input_buf + offset, (OP_LOG_FILE_W_MAXSIZE + 1 - offset), diff --git a/tool_lib/tool_cmd.c b/tool_lib/tool_cmd.c index 43a3b61..db54f0f 100644 --- a/tool_lib/tool_cmd.c +++ b/tool_lib/tool_cmd.c @@ -186,7 +186,6 @@ void command_parse_and_excute(const int argc, const char **argv) { struct major_cmd_ctrl *major_cmd = get_major_cmd(); int lock_fd; - int check; int ret; major_cmd->err_no = check_command_length(argc, argv); diff --git a/tool_lib/tool_lib.c b/tool_lib/tool_lib.c index ad4bb68..180418f 100644 --- a/tool_lib/tool_lib.c +++ b/tool_lib/tool_lib.c @@ -337,6 +337,9 @@ bool tool_can_print(uint32_t interval, uint32_t burst, uint32_t *print_num, uint { uint64_t cur_time; + if (!print_num || !last_time) + return false; + cur_time = (uint64_t)time(NULL); if ((*last_time + interval) == cur_time) *print_num = 0; -- 2.42.0.windows.2