net/mlx5: Avoid double clear or set of sync reset requested
authorMoshe Shemesh <moshe@nvidia.com>
Mon, 11 Apr 2022 17:38:44 +0000 (20:38 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 May 2022 10:30:13 +0000 (12:30 +0200)
commite967439d76e039b689e5fb512c1981b4e7b8dfb7
tree9d69f771f0128215c3b6c3a4888125d54666761f
parent9d6d76f5f19051cb1fea16faf142d2ced5500ce3
net/mlx5: Avoid double clear or set of sync reset requested

commit fc3d3db07b35885f238e1fa06b9f04a8fa7a62d0 upstream.

Double clear of reset requested state can lead to NULL pointer as it
will try to delete the timer twice. This can happen for example on a
race between abort from FW and pci error or reset. Avoid such case using
test_and_clear_bit() to verify only one time reset requested state clear
flow. Similarly use test_and_set_bit() to verify only one time reset
requested state set flow.

Fixes: 7dd6df329d4c ("net/mlx5: Handle sync reset abort event")
Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
Reviewed-by: Maher Sanalla <msanalla@nvidia.com>
Reviewed-by: Shay Drory <shayd@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c