diff options
author | Huazhong Tan <tanhuazhong@huawei.com> | 2019-09-05 21:31:38 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-09-06 15:20:34 +0200 |
commit | 525a294e6080a6d99722e58419a6830754b57ff3 (patch) | |
tree | b6d3b2aecaf186cb97543625d5d61bcf8d5ce7cd /drivers | |
parent | 323a2ac52227c20f3387ea1cd16c04a844cd1ea1 (diff) |
net: hns3: fix mis-assignment to hdev->reset_level in hclge_reset
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: 012fcb52f67c ("net: hns3: activate reset timer when calling reset_event")
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c index 0e1225c08020..76e1c84c5776 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c @@ -3619,6 +3619,7 @@ static int hclge_reset_stack(struct hclge_dev *hdev) static void hclge_reset(struct hclge_dev *hdev) { 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 @@ -3697,10 +3698,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, - &hdev->default_reset_request); - if (hdev->reset_level != HNAE3_NONE_RESET) - set_bit(hdev->reset_level, &hdev->reset_request); + reset_level = hclge_get_reset_level(ae_dev, + &hdev->default_reset_request); + if (reset_level != HNAE3_NONE_RESET) + set_bit(reset_level, &hdev->reset_request); return; |