The debugfs setup must be initialized prior to PQP operation,
but must also be deinitialized before base table takedown,
otherwise we are exposed to faults due to a race condition between
a user accessing debugfs tables and driver unload.
This commit moves the dfs init/deinit from sif_probe to
sif_hw_init to achieve this order.
Orabug:
24971465
Signed-off-by: Knut Omang <knut.omang@oracle.com>
if (ret)
goto base_failed;
+ ret = sif_dfs_register(sdev);
+ if (ret)
+ goto pfail_dfs;
+
/* Allocate collect buffers for kernel usage */
ret = sif_hw_kernel_cb_init(sdev);
if (ret)
pd_init_failed:
sif_hw_kernel_cb_fini(sdev);
cb_alloc_failed:
+ sif_dfs_unregister(sdev);
+pfail_dfs:
sif_base_deinit(sdev);
base_failed:
sif_chip_deinit(sdev);
dealloc_pd(sdev->pd, false);
sif_deinit_pd(sdev);
sif_hw_kernel_cb_fini(sdev);
+ sif_dfs_unregister(sdev);
sif_base_deinit(sdev);
sif_chip_deinit(sdev);
}
/* Type UMEM means no override - initialize */
sdev->mt_override = SIFMT_UMEM;
- err = sif_dfs_register(sdev);
- if (err)
- goto pfail_dfs;
-
/* PSIF initialization */
err = sif_hw_init(sdev);
if (err)
fwa_reg_failed:
sif_hw_deinit(sdev);
pfail_psif_base:
- sif_dfs_unregister(sdev);
-pfail_dfs:
sif_bar_deinit(pdev);
pfail_bar:
pci_disable_pcie_error_reporting(pdev);
sif_dealloc_mr(sdev, sdev->dma_inv_mr);
sif_fwa_unregister(sdev);
sif_hw_deinit(sdev);
- sif_dfs_unregister(sdev);
sif_bar_deinit(dev);
pci_clear_master(dev);
pci_disable_device(dev);