]> git.itanic.dy.fi Git - linux-stable/commit
net/mlx5: Serialize module cleanup with reload and remove
authorShay Drory <shayd@nvidia.com>
Wed, 14 Dec 2022 20:16:23 +0000 (22:16 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Wed, 8 Feb 2023 03:01:07 +0000 (19:01 -0800)
commit8f0d1451ecf7b3bd5a06ffc866c753d0f3ab4683
tree07435905964a0a1acdb66a94e726ffbcf08d16cc
parent184e1e4474dbcfebc4dbd1fa823a329978f25506
net/mlx5: Serialize module cleanup with reload and remove

Currently, remove and reload flows can run in parallel to module cleanup.
This design is error prone. For example: aux_drivers callbacks are called
from both cleanup and remove flows with different lockings, which can
cause a deadlock[1].
Hence, serialize module cleanup with reload and remove.

[1]
       cleanup                        remove
       -------                        ------
   auxiliary_driver_unregister();
                                     devl_lock()
                                      auxiliary_device_delete(mlx5e_aux)
    device_lock(mlx5e_aux)
     devl_lock()
                                       device_lock(mlx5e_aux)

Fixes: 912cebf420c2 ("net/mlx5e: Connect ethernet part to auxiliary bus")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/main.c