Unverified Commit 5f3e4bdd authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!8672 fix CVE-2024-36021 and CVE-2024-36900

Merge Pull Request from: @ci-robot 
 
PR sync from: Ye Bin <yebin10@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/5EHZLMNOB7OEB5NMDQKBXF4EOFEBBKDB/ 
Peiyang Wang (1):
  net: hns3: release PTP resources if pf initialization failed

Yonglong Liu (3):
  net: hns3: fix kernel crash when devlink reload during pf
    initialization
  net: hns3: fix kernel crash when devlink reload during vf
    initialization
  net: hns3: fix kernel crash when devlink reload during initialization


-- 
2.31.1
 
https://gitee.com/openeuler/kernel/issues/I9TM2X
https://gitee.com/src-openeuler/kernel/issues/I9U3H2 
 
Link:https://gitee.com/openeuler/kernel/pulls/8672

 

Reviewed-by: default avatarYue Haibing <yuehaibing@huawei.com>
Signed-off-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
parents 64608431 0095ee7c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -45,8 +45,9 @@ static int hclge_devlink_reload_down(struct devlink *devlink, bool netns_change,
	struct pci_dev *pdev = hdev->pdev;
	int ret;

	if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state)) {
		dev_err(&pdev->dev, "reset is handling\n");
	if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state) ||
	    !test_bit(HCLGE_STATE_NIC_REGISTERED, &hdev->state)) {
		dev_err(&pdev->dev, "reset is handling or driver removed\n");
		return -EBUSY;
	}

+8 −8
Original line number Diff line number Diff line
@@ -12243,14 +12243,10 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
	if (ret)
		goto out;

	ret = hclge_devlink_init(hdev);
	if (ret)
		goto err_pci_uninit;

	/* Firmware command queue initialize */
	ret = hclge_comm_cmd_queue_init(hdev->pdev, &hdev->hw.hw);
	if (ret)
		goto err_devlink_uninit;
		goto err_pci_uninit;

	/* Firmware command initialize */
	ret = hclge_comm_cmd_init(hdev->ae_dev, &hdev->hw.hw, &hdev->fw_version,
@@ -12383,7 +12379,7 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)

	ret = hclge_update_port_info(hdev);
	if (ret)
		goto err_sysfs_unregister;
		goto err_ptp_uninit;

	INIT_KFIFO(hdev->mac_tnl_log);

@@ -12423,6 +12419,10 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
		dev_warn(&pdev->dev,
			 "failed to wake on lan init, ret = %d\n", ret);

	ret = hclge_devlink_init(hdev);
	if (ret)
		goto err_ptp_uninit;

	hclge_state_init(hdev);
	hdev->last_reset_time = jiffies;

@@ -12433,6 +12433,8 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)

	return 0;

err_ptp_uninit:
	hclge_ptp_uninit(hdev);
err_sysfs_unregister:
	hclge_unregister_sysfs(hdev);
err_mdiobus_unreg:
@@ -12444,8 +12446,6 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
	pci_free_irq_vectors(pdev);
err_cmd_uninit:
	hclge_comm_cmd_uninit(hdev->ae_dev, &hdev->hw.hw);
err_devlink_uninit:
	hclge_devlink_uninit(hdev);
err_pci_uninit:
	pcim_iounmap(pdev, hdev->hw.hw.io_base);
	pci_clear_master(pdev);
+3 −2
Original line number Diff line number Diff line
@@ -46,8 +46,9 @@ static int hclgevf_devlink_reload_down(struct devlink *devlink,
	struct pci_dev *pdev = hdev->pdev;
	int ret;

	if (test_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state)) {
		dev_err(&pdev->dev, "reset is handling\n");
	if (test_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state) ||
	    !test_bit(HCLGEVF_STATE_NIC_REGISTERED, &hdev->state)) {
		dev_err(&pdev->dev, "reset is handling or driver removed\n");
		return -EBUSY;
	}

+4 −6
Original line number Diff line number Diff line
@@ -2952,10 +2952,6 @@ static int hclgevf_init_hdev(struct hclgevf_dev *hdev)
	if (ret)
		return ret;

	ret = hclgevf_devlink_init(hdev);
	if (ret)
		goto err_devlink_init;

	ret = hclge_comm_cmd_queue_init(hdev->pdev, &hdev->hw.hw);
	if (ret)
		goto err_cmd_queue_init;
@@ -3050,6 +3046,10 @@ static int hclgevf_init_hdev(struct hclgevf_dev *hdev)

	hclgevf_init_rxd_adv_layout(hdev);

	ret = hclgevf_devlink_init(hdev);
	if (ret)
		goto err_config;

	set_bit(HCLGEVF_STATE_SERVICE_INITED, &hdev->state);

	hdev->last_reset_time = jiffies;
@@ -3068,8 +3068,6 @@ static int hclgevf_init_hdev(struct hclgevf_dev *hdev)
err_cmd_init:
	hclge_comm_cmd_uninit(hdev->ae_dev, &hdev->hw.hw);
err_cmd_queue_init:
	hclgevf_devlink_uninit(hdev);
err_devlink_init:
	hclgevf_pci_uninit(hdev);
	clear_bit(HCLGEVF_STATE_IRQ_INITED, &hdev->state);
	return ret;