dmaengine: idxd: free irq before wq type is reset
authorDave Jiang <dave.jiang@intel.com>
Thu, 12 May 2022 00:01:13 +0000 (17:01 -0700)
committerVinod Koul <vkoul@kernel.org>
Mon, 16 May 2022 12:49:29 +0000 (18:19 +0530)
Call idxd_wq_free_irq() in the drv_disable_wq() function before
idxd_wq_reset() is called. Otherwise the wq type is reset and the irq does
not get freed.

Fixes: 63c14ae6c161 ("dmaengine: idxd: refactor wq driver enable/disable operations")
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/165231367316.986407.11001767338124941736.stgit@djiang5-desk3.ch.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/idxd/device.c

index 001a820..c7412f5 100644 (file)
@@ -1383,9 +1383,9 @@ void drv_disable_wq(struct idxd_wq *wq)
        idxd_wq_free_resources(wq);
        idxd_wq_unmap_portal(wq);
        idxd_wq_drain(wq);
+       idxd_wq_free_irq(wq);
        idxd_wq_reset(wq);
        percpu_ref_exit(&wq->wq_active);
-       idxd_wq_free_irq(wq);
        wq->type = IDXD_WQT_NONE;
        wq->client_count = 0;
 }