Skip to content

net/mlx5: Serialize module cleanup with reload and remove

Mohammad Kabat requested to merge mkabat/centos-stream-9:2166480 into main

Bugzilla: https://bugzilla.redhat.com/2166480
Upstream-status: v6.2-rc8

commit 8f0d1451ecf7b3bd5a06ffc866c753d0f3ab4683
Author: Shay Drory shayd@nvidia.com
Date: Wed Dec 14 22:16:23 2022 +0200

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>  

Signed-off-by: Mohammad Kabat mkabat@redhat.com

Merge request reports