Merge tag 'dmaengine-fix-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / drivers / dma / idxd / device.c
index f43d81128b96b3672fab2ce2de0f54fea1660f2e..ecfdf4a8f1f838ea49f1dbe3f60b15574aa8be11 100644 (file)
@@ -807,6 +807,9 @@ err_bmap:
 
 static void idxd_device_evl_free(struct idxd_device *idxd)
 {
+       void *evl_log;
+       unsigned int evl_log_size;
+       dma_addr_t evl_dma;
        union gencfg_reg gencfg;
        union genctrl_reg genctrl;
        struct device *dev = &idxd->pdev->dev;
@@ -827,11 +830,15 @@ static void idxd_device_evl_free(struct idxd_device *idxd)
        iowrite64(0, idxd->reg_base + IDXD_EVLCFG_OFFSET);
        iowrite64(0, idxd->reg_base + IDXD_EVLCFG_OFFSET + 8);
 
-       dma_free_coherent(dev, evl->log_size, evl->log, evl->dma);
        bitmap_free(evl->bmap);
+       evl_log = evl->log;
+       evl_log_size = evl->log_size;
+       evl_dma = evl->dma;
        evl->log = NULL;
        evl->size = IDXD_EVL_SIZE_MIN;
        spin_unlock(&evl->lock);
+
+       dma_free_coherent(dev, evl_log_size, evl_log, evl_dma);
 }
 
 static void idxd_group_config_write(struct idxd_group *group)