Skip to content

Commit eadede5

Browse files
committed
Merge branch 'hns3-fixes'
Huazhong Tan says: ==================== net: hns3: fixes for -net There are some fixes about reset issue and a use-after-free of self-test. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 2294ca7 + a066562 commit eadede5

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed

drivers/net/ethernet/hisilicon/hns3/hns3_enet.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4127,9 +4127,8 @@ static void hns3_client_uninit(struct hnae3_handle *handle, bool reset)
41274127

41284128
hns3_put_ring_config(priv);
41294129

4130-
hns3_dbg_uninit(handle);
4131-
41324130
out_netdev_free:
4131+
hns3_dbg_uninit(handle);
41334132
free_netdev(netdev);
41344133
}
41354134

drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,18 +180,21 @@ static void hns3_lb_check_skb_data(struct hns3_enet_ring *ring,
180180
{
181181
struct hns3_enet_tqp_vector *tqp_vector = ring->tqp_vector;
182182
unsigned char *packet = skb->data;
183+
u32 len = skb_headlen(skb);
183184
u32 i;
184185

185-
for (i = 0; i < skb->len; i++)
186+
len = min_t(u32, len, HNS3_NIC_LB_TEST_PACKET_SIZE);
187+
188+
for (i = 0; i < len; i++)
186189
if (packet[i] != (unsigned char)(i & 0xff))
187190
break;
188191

189192
/* The packet is correctly received */
190-
if (i == skb->len)
193+
if (i == HNS3_NIC_LB_TEST_PACKET_SIZE)
191194
tqp_vector->rx_group.total_packets++;
192195
else
193196
print_hex_dump(KERN_ERR, "selftest:", DUMP_PREFIX_OFFSET, 16, 1,
194-
skb->data, skb->len, true);
197+
skb->data, len, true);
195198

196199
dev_kfree_skb_any(skb);
197200
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9859,7 +9859,7 @@ static void hclge_flr_prepare(struct hnae3_ae_dev *ae_dev)
98599859
set_bit(HCLGE_STATE_RST_HANDLING, &hdev->state);
98609860
hdev->reset_type = HNAE3_FLR_RESET;
98619861
ret = hclge_reset_prepare(hdev);
9862-
if (ret) {
9862+
if (ret || hdev->reset_pending) {
98639863
dev_err(&hdev->pdev->dev, "fail to prepare FLR, ret=%d\n",
98649864
ret);
98659865
if (hdev->reset_pending ||

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1793,6 +1793,11 @@ static int hclgevf_reset_prepare_wait(struct hclgevf_dev *hdev)
17931793
if (hdev->reset_type == HNAE3_VF_FUNC_RESET) {
17941794
hclgevf_build_send_msg(&send_msg, HCLGE_MBX_RESET, 0);
17951795
ret = hclgevf_send_mbx_msg(hdev, &send_msg, true, NULL, 0);
1796+
if (ret) {
1797+
dev_err(&hdev->pdev->dev,
1798+
"failed to assert VF reset, ret = %d\n", ret);
1799+
return ret;
1800+
}
17961801
hdev->rst_stats.vf_func_rst_cnt++;
17971802
}
17981803

0 commit comments

Comments
 (0)