]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.19.31/net-thunderx-add-nicvf_send_msg_to_pf-result-check-f.patch
Linux 4.14.108
[thirdparty/kernel/stable-queue.git] / releases / 4.19.31 / net-thunderx-add-nicvf_send_msg_to_pf-result-check-f.patch
1 From 67324ba376f6a66d0f112e1c1e48c6a9dce5fac6 Mon Sep 17 00:00:00 2001
2 From: Vadim Lomovtsev <vlomovtsev@marvell.com>
3 Date: Wed, 20 Feb 2019 11:02:44 +0000
4 Subject: net: thunderx: add nicvf_send_msg_to_pf result check for
5 set_rx_mode_task
6
7 [ Upstream commit 7db730d9d2f7b6af6aeac621b1890ea477a0cb8d ]
8
9 The rx_set_mode invokes number of messages to be send to PF for receive
10 mode configuration. In case if there any issues we need to stop sending
11 messages and release allocated memory.
12
13 This commit is to implement check of nicvf_msg_send_to_pf() result.
14
15 Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com>
16 Signed-off-by: David S. Miller <davem@davemloft.net>
17 Signed-off-by: Sasha Levin <sashal@kernel.org>
18 ---
19 drivers/net/ethernet/cavium/thunder/nicvf_main.c | 12 ++++++++----
20 1 file changed, 8 insertions(+), 4 deletions(-)
21
22 diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
23 index 4eb24e10ba4d..9800738448ec 100644
24 --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
25 +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
26 @@ -1950,7 +1950,8 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs,
27
28 /* flush DMAC filters and reset RX mode */
29 mbx.xcast.msg = NIC_MBOX_MSG_RESET_XCAST;
30 - nicvf_send_msg_to_pf(nic, &mbx);
31 + if (nicvf_send_msg_to_pf(nic, &mbx) < 0)
32 + goto free_mc;
33
34 if (mode & BGX_XCAST_MCAST_FILTER) {
35 /* once enabling filtering, we need to signal to PF to add
36 @@ -1958,7 +1959,8 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs,
37 */
38 mbx.xcast.msg = NIC_MBOX_MSG_ADD_MCAST;
39 mbx.xcast.data.mac = 0;
40 - nicvf_send_msg_to_pf(nic, &mbx);
41 + if (nicvf_send_msg_to_pf(nic, &mbx) < 0)
42 + goto free_mc;
43 }
44
45 /* check if we have any specific MACs to be added to PF DMAC filter */
46 @@ -1967,9 +1969,9 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs,
47 for (idx = 0; idx < mc_addrs->count; idx++) {
48 mbx.xcast.msg = NIC_MBOX_MSG_ADD_MCAST;
49 mbx.xcast.data.mac = mc_addrs->mc[idx];
50 - nicvf_send_msg_to_pf(nic, &mbx);
51 + if (nicvf_send_msg_to_pf(nic, &mbx) < 0)
52 + goto free_mc;
53 }
54 - kfree(mc_addrs);
55 }
56
57 /* and finally set rx mode for PF accordingly */
58 @@ -1977,6 +1979,8 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs,
59 mbx.xcast.data.mode = mode;
60
61 nicvf_send_msg_to_pf(nic, &mbx);
62 +free_mc:
63 + kfree(mc_addrs);
64 }
65
66 static void nicvf_set_rx_mode_task(struct work_struct *work_arg)
67 --
68 2.19.1
69