Commit f46b2cbb authored by Huazhong Tan's avatar Huazhong Tan Committed by Xie XiuQi
Browse files

net: hns3: fix mis-assignment to hdev->reset_level in hclge_reset



driver inclusion
category: bugfix
bugzilla: NA
CVE: NA

Since hclge_get_reset_level may return HNAE3_NONE_RESET,
so hdev->reset_level can not be assigned with the return
value in the hclge_reset(), otherwise, it will cause
the use of hdev->reset_level in hclge_reset_event get
into error.

Fixes: 012fcb52 ("net: hns3: activate reset timer when calling reset_event")

Feature or Bugfix:Bugfix

Signed-off-by: default avatarHuazhong Tan <tanhuazhong@huawei.com>
Reviewed-by: default avatarlinyunsheng <linyunsheng@huawei.com>
Reviewed-by: default avatarYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
parent 9e1643a1
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -3597,6 +3597,7 @@ static void hclge_reset(struct hclge_dev *hdev)
{
	struct hnae3_handle *handle = &hdev->vport[0].nic;
	struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev);
	enum hnae3_reset_type reset_level;
	int ret;

	/* Initialize ae_dev reset status as well, in case enet layer wants to
@@ -3674,10 +3675,10 @@ static void hclge_reset(struct hclge_dev *hdev)
	 * it should be handled as soon as possible. since some errors
	 * need this kind of reset to fix.
	 */
	hdev->reset_level = hclge_get_reset_level(ae_dev,
	reset_level = hclge_get_reset_level(ae_dev,
					    &hdev->default_reset_request);
	if (hdev->reset_level != HNAE3_NONE_RESET)
		set_bit(hdev->reset_level, &hdev->reset_request);
	if (reset_level != HNAE3_NONE_RESET)
		set_bit(reset_level, &hdev->reset_request);

	if (handle && handle->ae_algo->ops->reset_done)
		handle->ae_algo->ops->reset_done(handle, true);