From 4e0b6612cc9438d687fdeeaffc2dafa7e7f7523e Mon Sep 17 00:00:00 2001 From: Yonglong Liu Date: Tue, 17 Oct 2023 09:18:26 +0800 Subject: [PATCH 1/3] net: hns3: unsigned value not need to judge to be less than 0 driver inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I8PDAE CVE: NA ---------------------------------------------------------------------- Fixes: c64545e1e5fa ("net: hns3: add support for Hisilicon ptp sync device") Signed-off-by: Yonglong Liu --- drivers/ptp/ptp_hisi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/ptp/ptp_hisi.c b/drivers/ptp/ptp_hisi.c index d42459992b4c..0eb1ebf44dc8 100644 --- a/drivers/ptp/ptp_hisi.c +++ b/drivers/ptp/ptp_hisi.c @@ -756,7 +756,7 @@ static ssize_t hisi_ptp_dbg_read_state(struct file *filp, char __user *buf, if (*ppos < 0) return -EINVAL; - if (cnt <= 0) + if (cnt == 0) return 0; if (!access_ok(buf, cnt)) return -EFAULT; @@ -914,7 +914,7 @@ static ssize_t hisi_ptp_dbg_read_reg(struct file *filp, char __user *buf, if (*ppos < 0) return -EINVAL; - if (cnt <= 0) + if (cnt == 0) return 0; if (!access_ok(buf, cnt)) return -EFAULT; -- Gitee From 49f3230c871aa0221f60e49b13d2bd1ea9d29c94 Mon Sep 17 00:00:00 2001 From: Jian Shen Date: Sun, 8 Oct 2023 10:56:04 +0800 Subject: [PATCH 2/3] net: hns3: remove unnecessary variables initialization driver inclusion category: cleanup bugzilla: https://gitee.com/openeuler/kernel/issues/I8PDAE CVE: NA ---------------------------------------------------------------------- Removes several unnecessary variables initialization. Signed-off-by: Jian Shen --- drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 2 +- drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c index 7603ea23fde1..756ec8c26c72 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c @@ -1288,7 +1288,7 @@ static void hns3_dhcp_cal_l4_csum(struct sk_buff *skb) { union l3_hdr_info l3; union l4_hdr_info l4; - __wsum csum = 0; + __wsum csum; int offset; if (skb->ip_summed == CHECKSUM_PARTIAL) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c index 61e0adb4b2b0..fb38192e5a59 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c @@ -1165,7 +1165,7 @@ static const hclge_mbx_ops_fn hclge_mbx_ops_list[HCLGE_MBX_OPCODE_MAX] = { static void hclge_mbx_request_handling(struct hclge_mbx_ops_param *param) { - hclge_mbx_ops_fn cmd_func = NULL; + hclge_mbx_ops_fn cmd_func; struct hclge_dev *hdev; int ret = 0; -- Gitee From ef003ce053464c273c5e20c6ffe37d5078173934 Mon Sep 17 00:00:00 2001 From: Jian Shen Date: Tue, 7 Nov 2023 10:26:59 +0800 Subject: [PATCH 3/3] net: hns3: set the freed pointers to NULL when lifetime is not end driver inclusion category: cleanup bugzilla: https://gitee.com/openeuler/kernel/issues/I8PDAE CVE: NA ---------------------------------------------------------------------- There are several pointers are freed but not setted to NULL, and their lifetime is not end immediately. To avoid misusing there wild pointers, set them to NULL. Signed-off-by: Jian Shen --- drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 1 + drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 4 ++++ drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c index 298bf46c57bc..1ebf63d8bd92 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c @@ -303,6 +303,7 @@ static int hns3_lp_run_test(struct net_device *ndev, enum hnae3_loop mode) good_cnt++; } else { kfree_skb(skb); + skb = NULL; netdev_err(ndev, "hns3_lb_run_test xmit failed: %d\n", tx_ret); } diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c index 047d3280a138..44cbbd91860d 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c @@ -5441,6 +5441,7 @@ static void hclge_fd_free_node(struct hclge_dev *hdev, { hlist_del(&rule->rule_node); kfree(rule); + rule = NULL; hclge_sync_fd_state(hdev); } @@ -5465,6 +5466,7 @@ static void hclge_update_fd_rule_node(struct hclge_dev *hdev, new_rule->rule_node.pprev = old_rule->rule_node.pprev; memcpy(old_rule, new_rule, sizeof(*old_rule)); kfree(new_rule); + new_rule = NULL; break; case HCLGE_FD_DELETED: hclge_fd_dec_rule_cnt(hdev, old_rule->location); @@ -9031,6 +9033,7 @@ static void hclge_update_mac_node(struct hclge_mac_node *mac_node, if (mac_node->state == HCLGE_MAC_TO_ADD) { list_del(&mac_node->node); kfree(mac_node); + mac_node = NULL; } else { mac_node->state = HCLGE_MAC_TO_DEL; } @@ -9661,6 +9664,7 @@ static void hclge_uninit_vport_mac_list(struct hclge_vport *vport, case HCLGE_MAC_TO_ADD: list_del(&mac_node->node); kfree(mac_node); + mac_node = NULL; break; } } diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c index 1a832a89194b..3e0d3b12bd88 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c @@ -1028,6 +1028,7 @@ static void hclgevf_update_mac_node(struct hclgevf_mac_addr_node *mac_node, if (mac_node->state == HCLGEVF_MAC_TO_ADD) { list_del(&mac_node->node); kfree(mac_node); + mac_node = NULL; } else { mac_node->state = HCLGEVF_MAC_TO_DEL; } @@ -2494,6 +2495,7 @@ static int hclgevf_init_msi(struct hclgevf_dev *hdev) sizeof(int), GFP_KERNEL); if (!hdev->vector_irq) { devm_kfree(&pdev->dev, hdev->vector_status); + hdev->vector_status = NULL; pci_free_irq_vectors(pdev); return -ENOMEM; } @@ -2507,6 +2509,8 @@ static void hclgevf_uninit_msi(struct hclgevf_dev *hdev) devm_kfree(&pdev->dev, hdev->vector_status); devm_kfree(&pdev->dev, hdev->vector_irq); + hdev->vector_status = NULL; + hdev->vector_irq = NULL; pci_free_irq_vectors(pdev); } -- Gitee