[MLX4_BUS] Bad order of operations in mlx4_ib teardown process. [mlnx: 4208]
[mirror/winof/.git] / hw / mlx4 / kernel / bus / ib / main.c
index 8910636..a886302 100644 (file)
@@ -626,11 +626,12 @@ static void mlx4_ib_remove(struct mlx4_dev *dev, void *ibdev_ptr)
                ib_unregister_device(&ibdev->ib_dev);
                goto dealloc_dev;
        }
+
+       ib_unregister_device(&ibdev->ib_dev);
        
        for (p = 1; p <= dev->caps.num_ports; ++p)
                mlx4_CLOSE_PORT(dev, p);
 
-       ib_unregister_device(&ibdev->ib_dev);
        iounmap(ibdev->uar_map,PAGE_SIZE);
        mlx4_uar_free(dev, &ibdev->priv_uar);
        mlx4_pd_free(dev, ibdev->priv_pdn);