]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.9.4/net-mlx5-cancel-recovery-work-in-remove-flow.patch
5.1-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 4.9.4 / net-mlx5-cancel-recovery-work-in-remove-flow.patch
1 From foo@baz Thu Jan 12 21:37:26 CET 2017
2 From: Daniel Jurgens <danielj@mellanox.com>
3 Date: Wed, 28 Dec 2016 14:58:33 +0200
4 Subject: net/mlx5: Cancel recovery work in remove flow
5
6 From: Daniel Jurgens <danielj@mellanox.com>
7
8
9 [ Upstream commit 689a248df83b6032edc57e86267b4e5cc8d7174e ]
10
11 If there is pending delayed work for health recovery it must be canceled
12 if the device is being unloaded.
13
14 Fixes: 05ac2c0b7438 ("net/mlx5: Fix race between PCI error handlers and health work")
15 Signed-off-by: Daniel Jurgens <danielj@mellanox.com>
16 Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
17 Signed-off-by: David S. Miller <davem@davemloft.net>
18 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19 ---
20 drivers/net/ethernet/mellanox/mlx5/core/main.c | 5 +++--
21 1 file changed, 3 insertions(+), 2 deletions(-)
22
23 --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
24 +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
25 @@ -1159,6 +1159,8 @@ static int mlx5_unload_one(struct mlx5_c
26 {
27 int err = 0;
28
29 + mlx5_drain_health_wq(dev);
30 +
31 mutex_lock(&dev->intf_state_mutex);
32 if (test_bit(MLX5_INTERFACE_STATE_DOWN, &dev->intf_state)) {
33 dev_warn(&dev->pdev->dev, "%s: interface is down, NOP\n",
34 @@ -1319,10 +1321,9 @@ static pci_ers_result_t mlx5_pci_err_det
35
36 mlx5_enter_error_state(dev);
37 mlx5_unload_one(dev, priv, false);
38 - /* In case of kernel call save the pci state and drain health wq */
39 + /* In case of kernel call save the pci state */
40 if (state) {
41 pci_save_state(pdev);
42 - mlx5_drain_health_wq(dev);
43 mlx5_pci_disable_device(dev);
44 }
45