| .. | .. |
|---|
| 618 | 618 | priv = container_of(health, struct mlx5_priv, health); |
|---|
| 619 | 619 | dev = container_of(priv, struct mlx5_core_dev, priv); |
|---|
| 620 | 620 | |
|---|
| 621 | + mutex_lock(&dev->intf_state_mutex); |
|---|
| 622 | + if (test_bit(MLX5_DROP_NEW_HEALTH_WORK, &health->flags)) { |
|---|
| 623 | + mlx5_core_err(dev, "health works are not permitted at this stage\n"); |
|---|
| 624 | + mutex_unlock(&dev->intf_state_mutex); |
|---|
| 625 | + return; |
|---|
| 626 | + } |
|---|
| 627 | + mutex_unlock(&dev->intf_state_mutex); |
|---|
| 621 | 628 | enter_error_state(dev, false); |
|---|
| 622 | 629 | if (IS_ERR_OR_NULL(health->fw_fatal_reporter)) { |
|---|
| 623 | 630 | if (mlx5_health_try_recover(dev)) |
|---|