Skip to content

Commit 8445d9d

Browse files
Jie WangPaolo Abeni
authored andcommitted
net: hns3: fix wrong use of semaphore up
Currently, if hns3 PF or VF FLR reset failed after five times retry, the reset done process will directly release the semaphore which has already released in hclge_reset_prepare_general. This will cause down operation fail. So this patch fixes it by adding reset state judgement. The up operation is only called after successful PF FLR reset. Fixes: 8627bde ("net: hns3: refactor the precedure of PF FLR") Fixes: f28368b ("net: hns3: refactor the procedure of VF FLR") Signed-off-by: Jie Wang <wangjie125@huawei.com> Signed-off-by: Jijie Shao <shaojijie@huawei.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent 7965a7f commit 8445d9d

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11516,8 +11516,8 @@ static void hclge_reset_done(struct hnae3_ae_dev *ae_dev)
1151611516
dev_err(&hdev->pdev->dev, "fail to rebuild, ret=%d\n", ret);
1151711517

1151811518
hdev->reset_type = HNAE3_NONE_RESET;
11519-
clear_bit(HCLGE_STATE_RST_HANDLING, &hdev->state);
11520-
up(&hdev->reset_sem);
11519+
if (test_and_clear_bit(HCLGE_STATE_RST_HANDLING, &hdev->state))
11520+
up(&hdev->reset_sem);
1152111521
}
1152211522

1152311523
static void hclge_clear_resetting_state(struct hclge_dev *hdev)

drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1747,8 +1747,8 @@ static void hclgevf_reset_done(struct hnae3_ae_dev *ae_dev)
17471747
ret);
17481748

17491749
hdev->reset_type = HNAE3_NONE_RESET;
1750-
clear_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state);
1751-
up(&hdev->reset_sem);
1750+
if (test_and_clear_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state))
1751+
up(&hdev->reset_sem);
17521752
}
17531753

17541754
static u32 hclgevf_get_fw_version(struct hnae3_handle *handle)

0 commit comments

Comments
 (0)